iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0

Day19-[Ruby]block物件化:Proc, lambda

昨天有講到,
block不是物件,
無法單獨存在,
也無法主動執行。

有一些方法可以使block物件化:

Proc

使用 Proc 類別把 Block 物件化

say_hello_to = Proc.new { |name| puts "hi #{name}"}  

呼叫Proc 方式

say_hello_to.call("小花")    # .call
say_hello_to.("小花")        # .小括號
say_hello_to["小花"]         # 中括號
say_hello_to === "小花"      # 三個等號
say_hello_to.yield "小花"    # .yield

lambda

Proc 類別下,還有一個lambda可以把 Block 物件化,
但又有些許不同。

say_hello_to = lambda { |name| puts "hi #{name}"} 

或是

say_hello_to = ->(name) { puts "hi #{name}"} 

這兩種方式都可以把 Block 物件化,
呼叫方式和Proc 相同,
不過執行上會有些許不同,
明天我們再來詳細比較吧!

tags: Ruby Proc lambda

上一篇
Day18-[Ruby]block是什麼?
下一篇
Day20-[Ruby]Proc, lambda比較
系列文
從零開始的工程師轉職之路.新手學Ruby / Ruby on Rails遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言