我是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 –