我试图Any在以下函数中使用常规类型:
function f(arr::Array{Tuple{ASCIIString, Any},1})
arr[1]
end
Run Code Online (Sandbox Code Playgroud)
它适用于
f([("a",1), ("b","x")])
Run Code Online (Sandbox Code Playgroud)
但在
f([("a",1)])
Run Code Online (Sandbox Code Playgroud)
这是行不通的.一个人认为Int实际上是一个Any,但显然不是.
如何f在后一种情况下工作?我对一般解决方案感兴趣,因为这个问题在朱莉娅的许多地方都出现了,上面只是一个简单的例子.我应该使用Union所有类型的代替Any元组吗?
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
Run Code Online (Sandbox Code Playgroud)