if-elseで書いた上のような処理をmatch-caseを用いてやりたいと思いました。
val
の型がint
とfloat
で同じ処理を行うやりたかった動機は、type(val)
をいたるところに書く必要があり、コードが読みにくかったからです。
⚠
下のコードを実行するとエラーが発生します
JavaScriptとかだったらこんな感じの書き方をしたはずですが、Pythonではダメでした。
個人的には失敗したコードのほうが自然なんですけど、Pythonではこちらのコードが正しいらしいです。
pythonで普通にint()
を実行すると0
と出力されるので、val == 0
でなければ中の処理が実行されなさそうですが、そんなことはなく、たとえばval == 1
でもcase int():
の処理が実行されます。不思議ですね。
クラスパターンというPythonの仕様だそうですが、うーんと思ってしまいました。
💡
val
がある型Class
のインスタンスかどうか判定したい
match val
とするcase Class():
とする💡
val
がある値a
またはb
であることを判定したい
case a | b:
とする