2
A
回答
7
1. PROC不檢查傳遞的參數,但拉姆達確實
proc1 = Proc.new { |a, b| a + 5 }
proc1.call(2) # call with only one parameter
=> 7 # no error, unless the block uses the 2nd parameter
lambda1 = lambda { |a, b| a + 5 }
lambda1.call(2)
=> ArgumentError: wrong number of arguments (1 for 2)
僅當塊使用第二PARAM PROC將拋出錯誤。
proc2 = Proc.new { |a, b| a + b }
proc2.call(2) # call with only one parameter
=> TypeError: nil can't be coerced into Fixnum
2. PROC從調用方法返回,而拉姆達不
def meth1
Proc.new { return 'return from proc' }.call
return 'return from method'
end
puts meth1
=> return from proc
def meth2
lambda { return 'return from lambda' }.call
return 'return from method'
end
puts meth2
=> return from method
如果它們沒有一個方法叫做內部,
proc1 = Proc.new { return "Thank you" }
proc1.call
=> LocalJumpError: unexpected return
lambda1 = lambda { return "Thank you" }
lambda1.call
=> "Thank you"
3.作用域/命名示波器是Rails
的一項功能
它被用作方法調用的關聯對象或模型
例如,在user.rb指定哪些可以參照常用查詢:
scope :developers, -> { where(:role => 'developer') }
你可以使用它作爲
@developers = User.developers
範圍是可鏈接的,所以你可以做查詢,如
@developers = User.developers.where(:age => 40)
示例中定義的作用域與定義類方法完全相同,如下所示。
def self.developers
where(:role => 'developer')
end
+1
謝謝你清楚地解釋一切! – Pavan
相關問題
- 1. android命名空間之間的區別
- 2. 類區域和堆之間的區別
- 3. 「域名」和「非域名」cookies之間有什麼區別?
- 4. 「使用MyNameSpace」之間的區別和「命名空間MyNameSpace」
- 5. lambdas中的[&captured]和[&local = captured]之間的區別是什麼?
- 6. C++中重載的lambdas以及clang和gcc之間的區別
- 7. 主機名和完全限定域名(FQDN)之間的區別
- 8. 表重命名和交換分區之間的區別
- 9. 「NG」和「QB」域ID之間的區別
- 10. Winforms,WPF和城域之間的區別?
- 11. 區域適配器和區域行爲之間的區別?
- 12. 命名實體識別和解析之間的區別?
- 13. 函數級作用域和塊級作用域之間的區別
- 14. ColdFusion中COOKIE和CLIENT作用域之間的區別?
- 15. perl命令之間的區別'=>'和'='
- 16. Shell:eval和ksh命令之間的區別
- 17. mvn和mvn3命令之間的區別
- 18. qdel和kill命令之間的區別
- 19. SERP中的.net,.com和.org域名之間的區別
- 20. halo和mx命名空間的區別
- 21. /user,/ base和/ people域名之間的區別是什麼?
- 22. x:Key和x之間的區別:名稱
- 23. 就是Active Directory和目錄命名服務之間的區別
- 24. C#和VB如何處理命名參數之間的區別?
- 25. BEM和SUIT之間的區別CSS命名約定
- 26. '|'之間的區別和 '+' 的位操作
- 27. 工作簿和_workbook之間的區別
- 28. 與別名之間的區別
- 29. 之間的〜/和的區別../
- 30. 應用程序域和應用程序池之間的區別?
http://stackoverflow.com/questions/626/when-to-use-lambda-when-to-use-proc-new http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/ – Muntasim