【一人 bugs.ruby Advent Calendar 2021】[Feature #17768] Proposal: Downward assignments【1日目】
一人 bugs.ruby Advent Calendar 2021 1日目の記事になります。
さて、去年に引き続き今年も『毎週気になった bugs.ruby のチケットをまとめてみる』ということを継続してやっていました。
と、言うことで今年も去年に引き続き Advent Calendar で今年気になったチケット的なやつをまとめてみようかなーと思います。
例によって内容はあんまりつめつめじゃなくて軽く紹介していく感じになります。
[Feature #17768] Proposal: Downward assignments
次のように変数を下の行で定義する提案になります。
# var = 42 と同じ 42 ^^var # 中間の式も代入できる p(2 * 3 * 7) #=> 42 ^^^^^var p var #=> 6
実際のユースケースとしていくつか紹介されています。
while (line = gets) != nil p line end # ↓↓↓ while gets != nil ^^^^line p line end
ary = [1, 2, 3, 4, 5] ary.each {|elem| found = elem if elem.even? } p found #=> 4 # ↓↓↓ ary = [1, 2, 3, 4, 5] ary.each {|elem| elem if elem.even? } ^^^^found p found #=> 4
class C def initialize(foo, bar) @foo = foo @bar = bar end end # ↓↓↓ class C def initialize(foo, bar) ^^^@foo ^^^@bar end
めっちゃ便利そう!!!!
しかし、残念ながらこれはエイプリルフールのネタチケットなので 4月1日を過ぎたらシュッとクローズされてしまいました。悲しい。
ちなみにエイプリルフールのネタではあるんですがちゃんと patch ファイルも付いていてパッチを当てると以下の Ruby のコードがちゃんと動きます。すごい。
(2 * 3 * 7) ^^^^^var p var while gets != nil ^^^^line p line end ary = [1, 2, 3, 4, 5] ary.each {|elem| elem if elem.even? } ^^^^found p found #=> 4
どうやってやってるの…。