我是Rails的初学者。我想问你一些关于默认范围的问题。为什么default_scope使用'lambda'?请看下面的课程。为什么在默认的范围内使用rails
Class Category < ActiveRecord::Base
default_scope labmda { order('categories.name') }
end
为什么不使用典型的块代替lambda?
总之我的问题,
- 什么是拉姆达?
- 为什么在默认范围内使用lambda?
我是Rails的初学者。我想问你一些关于默认范围的问题。为什么default_scope使用'lambda'?请看下面的课程。为什么在默认的范围内使用rails
Class Category < ActiveRecord::Base
default_scope labmda { order('categories.name') }
end
为什么不使用典型的块代替lambda?
总之我的问题,
lambdas基本上是一种方法来保存块或匿名函数(就像你一直在javascript中做的那样)。如果你不知道块是什么...
[1,3,5,6].map { |n| n * 2 }
的东西在大括号(或DO和结束语句之间}是块。
所以不是重写块一串的时候,你可以保存它,像这样:
my_lambda = lambda { |n| n * 2 }
而且你可以调用它像这样:
[1,3,5,6].map(&my_lambda)
像SERG io说,你并不需要在那里使用lambda。但我想你可以将块保存到其他地方,然后将它与default_scope一起用于它和其他几个类。
现在我看到lambda让我们重复块,就像我们在方法中做的那样。我也明白'lambda'在上面的类中是不需要的。所以你的意思是'default_scope {order('categories.name')}'没有lambda?为什么在不使用lambda的时候首先使用了它? –
我并不确定,但我猜想它或者是旧版本的rails所需要的,或者是那些不知道是否需要它的人写的,只是把它扔到那里,它的工作就这样保存下来了它。在codecademy上,块,特效和lambda表达式覆盖得很好。我建议通过它(很短)来看看使用它们的一些有用案例。另外,如果您觉得满意,请接受我的回答。 – baron816
根据上面引用的代码的书,在默认范围内使用lambda。这本书是“Beginning Rails 4,3rd Edition”。 –
lambda是没有必要的:http://guides.rubyonrails.org/active_record_querying.html#applying-a-default-scope –