クロージャでスイッチとカウンターを作ってみる。
スイッチ
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 のブロックはクロージャである
変更点
ご指摘を受け構成・内容を変更しています。詳しくはコメントを参照してください。