如何在crystal中用一个或两个参数声明块参数



我希望能够接受一个块参数,它接受一个或两个Int参数

这个代码不起作用,但表达了我的意图
def initialize(*input, &block : (Int32 | (Int32, Int32)) -> Int32) @input = input @calc = block end

这适用于具有一个Int参数的块。如何使它与一个或两个Int参数一起工作?

在Crystal中,获取块参数是可选的。因此,只需用最大数量的参数声明块,并在调用方决定要接受多少参数:

def foo(&block : (Int32, Int32) -> Int32)
block.call(1, 2)
end
foo {|a, b| a + b } # => 3
foo {|a| a } # => 1
foo { 5 } # => 5

相关内容

  • 没有找到相关文章

最新更新