我希望能够接受一个块参数,它接受一个或两个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