iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0

Day20-[Ruby]Proc, lambda比較

return 值不一樣

Lambda 的 return 是從 Lambda return
Proc 則是從定義 Proc 的 scope return

def proc1
  proc1 = Proc.new { return "小花" }
  proc1.call
  return "小草"
end

def lambda1
  lambda1 = lambda { return "小花" }
  lambda1.call
  return "小草"
end

puts proc1   # 小花
puts lambda1 # 小草

Lambda 處理參數較嚴謹

Proc 針對參數的數量不會進行檢查,不足補 nil ,過多會自動丟掉;Lambda 會要求參數數量正確才會執行,較嚴謹,否則會顯示 ArgumentError 錯誤訊息。

say_hello_to = Proc.new { |name1,name2| puts "hi #{name1} #{name2}" }
say_hello_to.call("小花")   #hi 小花
say_hello_to = lambda { |name1,name2| puts "hi #{name1} #{name2}" }
say_hello_to.call("小花")  #wrong number of arguments (given 1, expected 2) (ArgumentError)

參考來源

tags: Ruby Proc lambda

上一篇
Day19-[Ruby]block物件化:Proc, lambda
下一篇
Day21-[Ruby]@@類別變數與@實體變數差異的比較(Part I)
系列文
從零開始的工程師轉職之路.新手學Ruby / Ruby on Rails遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言