如何在Julia中使用更复杂类型的继承

时间:2015-09-26 18:57:11

标签: inheritance julia

我正在尝试在以下函数中使用常规类型Any

function f(arr::Array{Tuple{ASCIIString, Any},1})
    arr[1]
end

并且可以在

中使用
f([("a",1), ("b","x")])

但在

f([("a",1)])

它不起作用。我们认为Int实际上是Any,但显然不是。{/ p>

如何让f在后​​一种情况下工作?我对一般解决方案感兴趣,因为这个问题在朱莉娅的很多地方都出现了,上面只是一个简单的例子。我应该在元组中使用Union所有类型代替Any吗?

1 个答案:

答案 0 :(得分:7)

Julia中的类型参数是不变,请参阅http://julia.readthedocs.org/en/latest/manual/types/#parametric-composite-types。要获得您所追求的行为,您需要通过类型参数来参数化函数:

function f{T <: Tuple{ASCIIString, Any}}(arr::Array{T,1})
    arr[1]
end