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

Inheritance 在Julia中如何在更复杂的类型中使用继承,inheritance,julia,Inheritance,Julia,我试图在以下函数中使用常规类型Any: function f(arr::Array{Tuple{ASCIIString, Any},1}) arr[1] end 而且它在 f([("a",1), ("b","x")]) 但是在 f([("a",1)]) 它不起作用。人们会认为Int实际上是Any,但显然不是 在后一种情况下,如何使f工作?我对一个通用的解决方案感兴趣,因为这个问题在Julia的很多地方都会出现,上面只是一个简单的例子。我是否应该使用所有类型的并集来代替元组中的任何。

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

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

f([("a",1), ("b","x")])
但是在

f([("a",1)])
它不起作用。人们会认为
Int
实际上是
Any
,但显然不是


在后一种情况下,如何使
f
工作?我对一个通用的解决方案感兴趣,因为这个问题在Julia的很多地方都会出现,上面只是一个简单的例子。我是否应该使用所有类型的
并集
来代替元组中的
任何
。要获得所追求的行为,需要通过类型参数对函数进行参数化:

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

函数f{T}0.3.*用户必须使用较旧的元组类型声明样式
(..)
,而不是
元组{…}
,才能使代码正常工作。