如何将
plus
传递给calculate
方法?def calculate(&block : (Float64, Float64) -> Float64)
block.call(1.1, 2.2)
end
def plus(a, b)
a + b
end
calculate{|a, b| plus a, b}
这样做是行不通的
calculate ->plus
calculate &plus
P.S.
另一个问题是,如何使其适用于所有数字?而不仅仅是Float64
。这段代码无法编译,并提示需要比Number
更具体的类型。
def calculate(&block : (Number, Number) -> Number)
block.call(1, 2)
end
理想情况下,最好将其泛化,以便 typeof(block.call(1, 2)) => Int32
和 typeof(block.call(1.1, 2.2)) => Float64
&
到Proc
,因为我以为这是应该这样的方式 :)。 - Alex Craft