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.*用户必须使用较旧的元组类型声明样式(..)
,而不是元组{…}
,才能使代码正常工作。