julia - 在 Julia 中创建自定义类型
问题描述
在 Julia 中,我如何创建自定义类型MyOrderedDictA
等MyOrderedDictB
:
- 每个都具有 a 的所有功能
OrderdDict
,并且可以传递给任何接受AbstractDict
s 的函数 - 它们彼此不同,因此我可以利用多次调度。
我怀疑\希望这很简单,但一直无法弄清楚。
解决方案
基本上,您要做的就是定义您的 type MyOrderedDictA
,包装一个 regular OrderedDict
,并将所有可以应用于 an 的函数转发OrderedDict
到这个包装的 dict。
不幸的是,该AbstractDict
界面(据我所知)目前没有记录(参见AbstractArray
)。您可以查看它们的定义并检查为它们定义了哪些函数。或者,有更实用的方法来使用您的MyOrderedDictA
,每当您收到错误消息时,因为未定义函数,您“即时”转发此函数。
无论如何,使用Lazy.jl@forward
中的宏,您可以执行以下操作。
using Lazy
struct MyOrderedDictA{T,S} <: AbstractDict{T,S}
dict::OrderedDict{T,S}
end
MyOrderedDictA{T,S}(args...; kwargs...) where {T,S} = new{T,S}(OrderedDict{T,S}(args...; kwargs...))
function MyOrderedDictA(args...; kwargs...)
d = OrderedDict(args...; kwargs...)
MyOrderedDictA{keytype(d),valtype(d)}(d)
end
@forward MyOrderedDictA.dict (Base.length, Base.iterate, Base.getindex, Base.setindex!)
d = MyOrderedDictA(2=>1, 1=>2)
推荐阅读
- c# - 我想找到一个程序,从用户插入的五个数字中找到最大的数字(使用重复语句)
- firebase - 如何限制在 Firebase 消息中使用联系号码?
- c - 为什么clang报告静态库中引用的外部变量的未定义符号
- node.js - 节点应用程序未立即启动
- zap - 使用 ZAP 或 Burp 套件监听公共 ip 上的 https 请求
- reactjs - Reactjs 无限滚动
- r - 从“从头开始”创建具有特定比率/值的大型频率表?
- python - 使用 Python 在 Tkinter 小部件中打印导入函数的输出
- ms-access - 在访问中打开链接表文件时如何运行代码
- c - Ensure every path from root to a tree leaf node has the same number of black nodes ( C )