10
スイッチ/パターンマッチングのアイデア
私は最近F#を検討してきましたが、すぐにフェンスを飛び越えそうにありませんが、C#(またはライブラリのサポート)が生活を楽にする可能性のあるいくつかの領域をはっきりと強調しています。 特に、F#のパターンマッチング機能について考えています。これにより、非常に豊富な構文が可能になり、現在のスイッチ/条件付きC#の同等機能よりもはるかに表現力が豊かになります。私は直接的な例を挙げようとはしませんが(私のF#はそれまでではありません)、簡単に言えば次のことが可能です。 型による一致(識別された共用体の完全なカバレッジチェックを使用)[これにより、バインドされた変数の型も推測され、メンバーにアクセス権が与えられることに注意してください] 述語で一致 上記の組み合わせ(そしておそらく私が知らない他のいくつかのシナリオ) C#がこの豊富さの一部を最終的に借りるのは素晴らしいことですが、暫定的には、実行時に何ができるかを検討してきました。たとえば、いくつかのオブジェクトを組み合わせると、次のようになります。 var getRentPrice = new Switch<Vehicle, int>() .Case<Motorcycle>(bike => 100 + bike.Cylinders * 10) // "bike" here is typed as Motorcycle .Case<Bicycle>(30) // returns a constant .Case<Car>(car => car.EngineType == EngineType.Diesel, car => 220 + car.Doors * 20) .Case<Car>(car => car.EngineType == EngineType.Gasoline, car => …
151
c#
switch-statement