[Ruby][Sorbet] T.absurdで分岐処理のし忘れを防げる

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
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

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

ref

Built with Hugo
テーマ StackJimmy によって設計されています。