Ruby

Rubyのクロージャでスイッチとカウンタを作る

クロージャでスイッチとカウンターを作ってみる。


スイッチ

status = false

switch = -> { status = !status }

p switch.call # => true
p switch.call # => false
p switch.call # => true


カウンタ

n = 0

counter = -> { n += 1 }

p counter.call # => 1
p counter.call # => 2
p counter.call # => 3


メソッドの中に閉じる


スイッチ

def create_switch

status = false
-> { status = !status }
end

switch = create_switch()

p switch.call # => true
p switch.call # => false
p switch.call # => true


カウンタ

def create_counter

n = 0
-> { n += 1 }
end

counter = create_counter()

p counter.call # => 1
p counter.call # => 2
p counter.call # => 3


参考にした記事

クロージャとは - Qiita

Rubyでクロージャを使いたい(導入編)- Qiita

Ruby のブロックはクロージャである


変更点

ご指摘を受け構成・内容を変更しています。詳しくはコメントを参照してください。