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