相关疑难解决方法(0)

何时使用lambda,何时使用Proc.new?

在Ruby 1.8中,proc/lambda与另一方面之间存在细微差别Proc.new.

  • 这些差异是什么?
  • 你能给出如何决定选择哪一个的指导方针吗?
  • 在Ruby 1.9中,proc和lambda是不同的.这是怎么回事?

ruby lambda proc

332
推荐指数
10
解决办法
8万
查看次数

Ruby中的proc和lambda有什么区别?

什么时候你会使用一个而不是另一个?

ruby

168
推荐指数
4
解决办法
3万
查看次数

为什么显性回报会对Proc产生影响?

def foo
  f = Proc.new { return "return from foo from inside proc" }
  f.call # control leaves foo here
  return "return from foo" 
end

def bar
  b = Proc.new { "return from bar from inside proc" }
  b.call # control leaves bar here
  return "return from bar" 
end

puts foo # prints "return from foo from inside proc" 
puts bar # prints "return from bar" 
Run Code Online (Sandbox Code Playgroud)

我认为这个return关键字在Ruby中是可选的,return无论你是否请求它,你总是在想.鉴于这种情况,我觉得很奇怪,foobar有不同的输出由事实来确定foo包含一个明确的returnProc …

ruby return proc-object

51
推荐指数
3
解决办法
1万
查看次数

Proc和Lambda之间的差异

Ruby在通过Proc.newlambda(或->()1.9中的运算符)创建的Proc之间存在差异.似乎非lambda Procs将在一个块参数中传递一个数组.通过lambda创建的过程不会.

p = Proc.new { |a,b| a + b}
p[[1,2]] # => 3

l = lambda { |a,b| a + b }
l[[1,2]] # => ArgumentError: wrong number of arguments (1 for 2)
Run Code Online (Sandbox Code Playgroud)

有没有人对这种行为背后的动机有任何见解?

ruby functional-programming

21
推荐指数
1
解决办法
4684
查看次数