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:とする