DEV Community

hiko1129
hiko1129

Posted on • Originally published at note.hiko1129.com on

[Ruby][Sorbet] T.absurd prevents forgetting to do branch processing

Translate ja to en

T.absurdが書いてあると下記のように処理の記述漏れがある場合には型エラーになります。

class Hoge < T::Enum
  extend T::Sig

  enums do
    A = new
    B = new
    C = new
  end

  def to_s
    case self
    when A then 'a'
    when B then 'b'
    else
      T.absurd(self) # Cが処理されてないのでエラーとなる
    end
  end
end
Enter fullscreen mode Exit fullscreen mode

網羅的な分岐(主にenumの処理)を行うときはT.abusrd使いましょう。

ref

Top comments (0)