在Julia的类型系统中,有没有一种方法可以检查一个类型是否可迭代?

14

Julia中的集合需要支持三个函数才能进行迭代:start,next和done。

目前是否有一种表达函数输入x需要在类型系统中可迭代的方法?如果没有,这是否在计划路线图上?

1个回答

11

可能吗?是的,但不是非常优雅的方式:

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),也许检查 start 就足够了。

至于更明智的方法,这将需要多重继承或接口,正在讨论中,例如这里有一个问题,它链接到其他问题。


我们可以在不定义该类型的对象的情况下,检查该类型的start方法是否已定义。例如,要检查Symbol(非可迭代)是否已定义,我们可以看到length(methods(start,(Symbol,)))为零。 - Dan Getz
如果您拥有类型而不是对象,您还可以使用 method_exists - simonster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接