尝试使用包含Proc
联合类型的Tuple
作为参数时:
proc = ->(t : Tuple(Float64|Int32, Float64|Int32)){ t[0] + t[1] }
proc.call({1, 3})
我收到此错误:
type必须是Tuple(Float64 | Int32,Float64 | Int32),而不是Tuple(Int32,Int32)
那个类型已经是元组{1,3}
吗?如果没有,我怎么能传递那种类型的元组?
或者使用Proc
时不支持包含联合类型的元组?
答案 0 :(得分:3)
不幸的是,你现在必须明确地施展它:
alias Point = {Float64|Int32, Float64|Int32}
proc = ->(t : Point){ t[0] + t[1] }
proc.call({1, 3}.as(Point))
你可以用别名整理一下:
record Point, x : Float64|Int32, y : Float64|Int32
proc = ->(t : Point){ t.x + t.y }
proc.call(Point.new(1, 3))
或者甚至可以创建专用值类型:
{{1}}