Crystal中带有splats参数的调用方法

问题描述 投票:0回答:1

如何使用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, "+"}
crystal-lang
1个回答
0
投票

在您的代码中,calculate期望一个以两个整数为输入的块,但是calculate被一个接受元组作为输入的块调用。如下更改calculate允许使用splats。

def calculate(&block : (Tuple(Int32, Int32)) -> String)
  block.call({1,2})
end
© www.soinside.com 2019 - 2024. All rights reserved.