我正在尝试在以下函数中使用常规类型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
吗?
答案 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