如何通过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}
Run Code Online (Sandbox Code Playgroud)
这行不通
calculate ->plus
calculate &plus
Run Code Online (Sandbox Code Playgroud)
聚苯乙烯
另一个问题,如何使它适用于所有数字?不只是Float64。此代码不会编译并抱怨需要比Number
def calculate(&block : (Number, Number) -> Number)
block.call(1, 2)
end
Run Code Online (Sandbox Code Playgroud)
理想情况下,最好将其泛化,以便typeof(block.call(1, 2)) => Int32和typeof(block.call(1.1, 2.2)) => Float64
小智 5
如何将加号传入计算方法?
您正在寻找
calculate(&->plus(Float64, Float64))
Run Code Online (Sandbox Code Playgroud)
哪里->plus(Float64, Float64)返回一个Proc. 请注意,您必须指定参数的类型 - 请参阅参考手册中的From 方法部分。
如何使它适用于所有数字?
我会调查forall- 请参阅参考手册中有关自由变量的部分。