Downward assignments という名前で Ruby に提案された機能 (mame さん今年もありがとうございます) 。
p(2 * 3 * 7) #=> 42 ^^^^^var p var #=> 6
エイプリルフールということを失念していて「これは!」とおもしろく思った一方で思ったのが、以下のような RuboCop のテスト機構とぶつかった場合に、テストの仕組みを考える必要があるかもしれないという点だった (がんばりましょう) 。
expect_offense(<<~RUBY) def func some_preceding_statements x = something ^^^^^^^^^^^^^ Redundant assignment before returning detected. x end RUBY
また他の機能提案として、mrkn さんからはこんな提案が開かれていました。
irb(main):001:0> x = 3 => 3 irb(main):002:0> 2x => 6 irb(main):003:0> def pi = Math::PI => :pi irb(main):004:0> 2pi => 6.283185307179586
エイプリルフールネタでいうと、Ruby 3.0 で正式採用された Endless Method Definition の例もあるので、気になる人はウォッチしてみましょう。
2021年4月5日追記
いずれの提案もエイプリルフール終了ということでクローズされたようです。
[Feature #17768: Proposal: Downward assignments - Ruby master - Ruby Issue Tracking System](https://t.co/rQuRKFV2Fj) rejected :(
— _ko1 (@_ko1) 2021年4月5日