【发布时间】:2018-01-04 20:17:50
【问题描述】:
Ruby 代码:
def fnAdd(x)
return ->(y) { x + y }
end
add1 = 1.method(:fnAdd)
puts add1.call(10)
输出: Proc:0x007f52658d3330@main.rb:2 (lambda)
我在上述代码中获取所需输出时遇到问题。
我基本上是在尝试用 Ruby 编写以下 Scala 代码(它调用一个返回另一个函数的函数)。
Scala 代码:
def fnAdd (x:Int) = {
(y:Int) => x + y
}
var add1 = fnAdd (1)
var add2 = fnAdd (2)
println(add1(10))
println(add2(3))
输出: 11 5
我已尝试将代码转换为 Ruby,但我不确定它是否正确。我不明白输出,这似乎是某种 proc 对象。
有人可以解释一下我需要更改什么以获得所需的输出吗?
【问题讨论】:
标签: ruby lambda functional-programming proc