有没有办法检查一个类型在Julia';s型系统?

有没有办法检查一个类型在Julia';s型系统?,julia,Julia,Julia中的集合需要支持三个可移植函数:start、next和done 当前是否有一种方式来表示函数的输入x需要在类型系统中是可编辑的?如果没有,这是否在路线图上?是否可能?是的,但不是以非常优雅的方式: julia> x = 1:5 1:5 julia> applicable(start, x) true julia> applicable(next,x,start(x)) true julia> applicable(done,x,start(x)) true

Julia中的集合需要支持三个可移植函数:start、next和done


当前是否有一种方式来表示函数的输入x需要在类型系统中是可编辑的?如果没有,这是否在路线图上?是否可能?是的,但不是以非常优雅的方式:

julia> x = 1:5
1:5

julia> applicable(start, x)
true

julia> applicable(next,x,start(x))
true

julia> applicable(done,x,start(x))
true
我不确定如何避开
start(x)
s的需要-也许检查
start
会“足够好”


至于更合理的方法,这将需要多个继承或接口,这正在讨论中,例如,它链接到其他对象。

如果不定义所述类型的对象,我们可以检查该类型上start的定义。例如,要检查
Symbol
(不可编辑),我们会看到
length(methods(start,(Symbol,))
为零。如果您有类型而没有对象,您也可以使用
method\u exists