如何使用splat调用方法,例如fn *args, 2
?示例:
def calculate(&block : (Int32, Int32) -> String)
block.call(1, 2)
end
def operation(a : Int32, b : Int32, type : String)
[a, type, b].join(" ")
end
p calculate{|a, b| operation a, b, "+"}
这不起作用
p calculate{|*args| operation *args, "+"}
在您的代码中,calculate
期望一个以两个整数为输入的块,但是calculate
被一个接受元组作为输入的块调用。如下更改calculate
允许使用splats。
def calculate(&block : (Tuple(Int32, Int32)) -> String)
block.call({1,2})
end