当前位置 : 主页 > 手机开发 > 其它 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-19
我试图在以下函数中使用常规类型Any: function f(arr::Array{Tuple{ASCIIString, Any},1}) arr[1]end 它适用于 f([("a",1), ("b","x")]) 但在 f([("a",1)]) 这是行不通的.有人会认为Int实际上是Any,但显然不是. 如
我试图在以下函数中使用常规类型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
网友评论