Ruby 2.7.0 で個人的にグッときた新機能をちょっぴり試してみた


概要

Ruby 2.7.0 で導入された新機能のうち,次の機能を試してみた.

  • irb での複数行編集
  • パターンマッチ1

詳細

irb での複数行編集

Ruby 2.6 までの対話環境 Interactive Ruby でも複数行の関数などを記述することはできたが

  • 一度改行したら前の行に戻れない
  • そもそも見づらい

といった問題点が存在した.

しかしRuby 2.7 からは,改行しても前の行に戻ることができ,見た目もわかりやすくなった.

パターンマッチ

前節で例として用いた次の関数2

def fact(n)
    if n == 0
        return 1
    else
        return n * fact(n - 1)
    end
end

をパターンマッチを用いて記述すると次のようになる.

def fact(n)
    case n
    in 0
        return 1
    in _
        return n * fact(n - 1)
    end
end

この例だとパターンマッチの有難みがわかりにくいので,次の例も挙げておく.

def arymatch(ary)
    case ary
    in [0, [a, b, c]]
        p a
        p b
        p c
    end
end

下記は arymatch の実行例である.

> arymatch([0, [1, 2, 3]])
1
2
3
=> 3
> arymatch([0])
...(中略)...
NoMatchingPatternError ([0])

参考


  1. 関数型言語で広く使われている機能.今回のバージョンで実験的に導入された. 

  2. 非負整数に対してその階乗を返す関数である.