为什么lambda在rails中的默认范围内

时间:2015-11-03 14:37:40

标签: ruby-on-rails-4 lambda

我是Rails的初学者。我想问你关于默认范围的问题。为什么default_scope使用' lambda'?请看下面的课程。

Class Category < ActiveRecord::Base
  default_scope labmda { order('categories.name') }
end

为什么不使用典型的块而不是lambda?

总结我的问题,

  1. 什么是lambda?
  2. 为什么lambda在默认范围内使用?

1 个答案:

答案 0 :(得分:1)

lambdas基本上是一种保存块或匿名函数的方法(就像你一直在javascript中那样)。如果你不知道一个街区是什么......

[1,3,5,6].map { |n| n * 2 }

大括号中的内容(或do和end语句之间的内容}是一个块。

因此,不是多次重写块,您可以像这样保存它:

my_lambda = lambda { |n| n * 2 }

你可以这样称呼它:

[1,3,5,6].map(&my_lambda)
像塞尔吉奥说的那样,你真的不需要那里的lambda。但是我想你可以将块保存在其他地方,然后将它与default_scope一起用于它和其他几个类。