我希望能够接受一个或两个Int参数的block参数
此代码不起作用,但表达了我的意图。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