Ruby のエイプリルフール新構文 2021

Downward assignments という名前で Ruby に提案された機能 (mame さん今年もありがとうございます) 。

p(2 * 3 * 7)  #=> 42
  ^^^^^var

p var         #=> 6

bugs.ruby-lang.org

エイプリルフールということを失念していて「これは!」とおもしろく思った一方で思ったのが、以下のような RuboCop のテスト機構とぶつかった場合に、テストの仕組みを考える必要があるかもしれないという点だった (がんばりましょう) 。

expect_offense(<<~RUBY)
  def func
    some_preceding_statements
    x = something
    ^^^^^^^^^^^^^ Redundant assignment before returning detected.
    x
  end
RUBY

github.com

また他の機能提案として、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

bugs.ruby-lang.org

エイプリルフールネタでいうと、Ruby 3.0 で正式採用された Endless Method Definition の例もあるので、気になる人はウォッチしてみましょう。

2021年4月5日追記

いずれの提案もエイプリルフール終了ということでクローズされたようです。