Ruby 从方法中选择特定的Lambda

Ruby 从方法中选择特定的Lambda,ruby,lambda,closures,Ruby,Lambda,Closures,目前在Ruby中学习了更多关于Lambdas的知识,遇到了这样一个示例,我觉得非常有趣: [106] pry(main)> def another_method [106] pry(main)* begin [106] pry(main)* lambda { return "Hello World" } [106] pry(main)* ensure [106] pry(main)* puts "another_method exits" [106] pry(m

目前在Ruby中学习了更多关于Lambdas的知识,遇到了这样一个示例,我觉得非常有趣:

[106] pry(main)> def another_method
[106] pry(main)*   begin
[106] pry(main)*     lambda { return "Hello World" }
[106] pry(main)*   ensure  
[106] pry(main)*     puts "another_method exits"
[106] pry(main)*   end  
[106] pry(main)* end  
 => :another_method
[107] pry(main)> another_method
another_method exits
=> #<Proc:0x000001013d2af0@(pry):149 (lambda)>
[108] pry(main)> another_method.call
another_method exits
=> "Hello World"
如果您有上述场景,是否有一种方法可以选择调用哪一个并获取其值?因为如果我这么做,我会得到以下结果:

some_method.call => "there"
任何关于这方面的提示,如果可能的话,都会很好!谢谢

试试这个例子:

def some_method(n)
  a =  lambda { return "hello" }
  b =  lambda { return "there" }

  n % 2 == 0 ? a : b
end
您应该获得以下信息:

some_method(2).call
=> "hello"
some_method(1).call
=> "there"
我会尽力解释我认为你遗漏了什么:

在下面的代码中,调用some_方法将始终返回
b
的值,因为它是执行的最后一行。(另一个示例中的“确保”中的代码不起作用)

所以当你做一些方法调用时,你得到的是调用


这就是我的示例如何说明在lambdas=)之间进行选择的方法。

谢谢Abdo!我知道我错过了一个技巧:-)当然!享受红宝石!:-)
some_method(2).call
=> "hello"
some_method(1).call
=> "there"
def some_method
      a =  lambda { return "hello" }
      b =  lambda { return "there" }
end