グイド・ファン・ロッサム
新しい実装は、Scala、Rust、および F# で提供される「match」演算子によく似ており、指定された式の結果を、「case」演算子に基づいてブロックにリストされているパターンのリストと比較します。 C、Java、JavaScript で使用できる「switch」演算子とは異なり、「match」ベースの式ではさらに多くの機能が提供されます。
def http_error(ステータス):
試合ステータス:
ケース400:
「不正なリクエスト」を返す
ケース 401|403|404:
「許可されていません」を返す
ケース418:
返す「私はティーポットです」
場合_:
「何か別のこと」を返す
たとえば、オブジェクト、タプル、リスト、および任意のシーケンスを解凍して、既存の値に基づいて変数をバインドできます。 ネストされたテンプレートの定義、テンプレート内での追加の「if」条件の使用、マスク (「[x, y, *rest]」)、キーと値のマッピング (例: {"bandwidth": b、"latency") の使用が許可されます。 ”: l} を使用して「帯域幅」と「遅延」の値と辞書を抽出します)、サブテンプレートを抽出します(「:= 演算子」)、テンプレートで名前付き定数を使用します。 クラスでは、「__match__()」メソッドを使用してマッチング動作をカスタマイズできます。
データクラスからデータクラスをインポート
@データクラス
クラスポイント:
x:int
y:int
def whereis(ポイント):
マッチポイント:
ケースポイント(0, 0):
print("原点")
ケースポイント(0, y):
print(f"Y={y}")
ケースポイント(x, 0):
print(f"X={x}")
ケースポイント():
print("どこか別の場所")
場合_:
print("点ではありません")
マッチポイント:
case Point(x, y) x == y の場合:
print(f"Y=X at {x}")
点(x, y)の場合:
print(f"対角線上にない")
赤、緑、青 = 0、1、2
一致する色:
ケースのRED:
print("赤が見えます!")
ケースのグリーン:
print("草は緑です")
ケースのBLU
E:
print(“ブルースを感じています:(“)
レビュー用にセットが用意されました
出所: オープンネット.ru