相关疑难解决方法(0)

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

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

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

ruby lambda proc

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

Ruby - lambda vs. Proc.new

可能重复:
Ruby中的proc和lambda有什么区别?

运行此Ruby代码时:

def func_one
    proc_new = Proc.new {return "123"}
    proc_new.call
    return "456"
end

def func_two
    lambda_new = lambda {return "123"}
    lambda_new.call
    return "456"
end

puts "The result of running func_one is " + func_one
puts ""
puts "The result of running func_two is " + func_two
Run Code Online (Sandbox Code Playgroud)

我得到的结果如下:

The result of running func_one is 123

The result of running func_two is 456
Run Code Online (Sandbox Code Playgroud)

至于func_two,第一个 的价值在哪里return,也就是说,123

谢谢.

ruby lambda return proc-object

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

需要一个令人难忘的proc和lambda的解释

我已经尝试过关于procs和lambda的阅读,但我必须继续重读这个定义.

有人能以一种清晰而难忘的方式向我解释吗?

ruby ruby-on-rails

13
推荐指数
2
解决办法
1071
查看次数

为什么instance_eval使用Proc而不是Lambda成功?

我有以下课程:

class User
  code1 = Proc.new { }
  code2 = lambda { }

  define_method :test do
    self.class.instance_eval &code1
    self.class.instance_eval &code2
  end
end

User.new.test
Run Code Online (Sandbox Code Playgroud)

为什么第二个instance_eval失败并出现wrong number of arguments (1 for 0)错误?

ruby

9
推荐指数
2
解决办法
2533
查看次数

方法和proc对象有什么区别?

我知道Ruby中的方法不是对象,而是procs和lambdas.除此之外,他们之间有什么区别吗?因为我们都可以传球.是什么让proc对象与方法不同?

方法:

1.8.7-p334 :017 > def a_method(a,b)
1.8.7-p334 :018?>   puts "a method with args: #{a}, #{b}"
1.8.7-p334 :019?>   end
1.8.7-p334 :021 > meth_ref = Object.method("a_method")
 => #<Method: Class(Object)#a_method> 
1.8.7-p334 :022 > meth_ref.call(2,3)
Run Code Online (Sandbox Code Playgroud)

Proc对象:

  a = lambda {|a, b| puts "#{a}, #{b}"}
  a.call(2,3)
Run Code Online (Sandbox Code Playgroud)

ruby methods lambda proc

9
推荐指数
1
解决办法
2350
查看次数

5
推荐指数
1
解决办法
180
查看次数

困惑如何在ruby中使用lambda进行选择

我正在和ruby一起工作,我只是在学习lambdas.我有一个对象数组,我想根据不同的条件从数组中选择某些对象,如下所示:

result = array.select{|ar| ar.number > 4}
Run Code Online (Sandbox Code Playgroud)

我想把select的参数放到一个lambda表达式中,即我想放入|ar| ar.number > 4一个lambda表达式.我尝试了一些事情,包括:

result = array.select{lambda{|g| g.number > 4}}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我也试过这个:

l = lambda {g.number > 4}
result = array.select{|g| l}
Run Code Online (Sandbox Code Playgroud)

这也行不通.另外我需要将我的lambda express传递给一个函数,所以我不认为我做的第一种方式会有效.我该怎么做?

ruby lambda

3
推荐指数
3
解决办法
4659
查看次数

标签 统计

ruby ×7

lambda ×5

proc ×2

proc-object ×2

methods ×1

return ×1

ruby-on-rails ×1