ホームページ バックエンド開発 C#.Net チュートリアル C# 6 と VB 12 はパターン マッチングを追加しようとしています

C# 6 と VB 12 はパターン マッチングを追加しようとしています

Nov 24, 2016 am 11:58 AM

関数型プログラミング言語に由来するもう 1 つの概念が C# と VB 陣営に加わりました。それはパターン マッチングと呼ばれる機能です。一見すると、パターン マッチングは switch/select ステートメント ブロックのように機能しますが、その機能ははるかに強力です。

注: VB バージョンの仕様はまだ完成していないため、これらの例は主に C# のパターン マッチング仕様からのものです。

is or Matches 演算子

.NET でのパターン マッチングは、主に「is/Matches」演算子を通じてサポートされています。このあまり馴染みのない演算子は、クラスをそのコンポーネント部分に分割します。次の例は、火曜日のニュース レポートで言及されているデカルト レコード クラス http://www.infoq.com/news/2014/08/Record-Class (レコード クラス) に基づいています。

public static bool operator is(Cartesian c, out double x, out double y)
    x = c.X;
    y = c.Y;
    return true;
}
ログイン後にコピー

is 演算子は、その定義クラスでの使用に限定されず、別の方法で演算子を定義し、デカルト オブジェクトを分解して極オブジェクトと一致させることができます。

public static class Polar {
    public static bool operator is( Cartesian c, out double R, out double Theta)
   {
        R = Math.Sqrt(c.X*c.X + c.Y*c.Y);
        Theta = Math.Atan2(c.Y, c.X);
        return c.X != 0 || c.Y != 0;
   }
}
var c = Cartesian(3, 4);
if (c is Polar(var R, *))
   Console.WriteLine(R);
ログイン後にコピー

型パターン

最も単純なパターンは型パターンです。これは基本的に型変換を実行し、それを同時に変数に代入しようとします。以下にそのようなパターンの例を示します:

if (expr is Type v)
   { // code using v }
ログイン後にコピー

再帰パターン

ほとんどのパターンは再帰パターンとして表示されます。これは、パターンがより単純なパターンで構成されていることを意味します。このパターンの例を見てください:

var a = new Location(1, 2, 3); //x=1, y=2, z=3
if (a is Location(1, var y, *))
ログイン後にコピー

この再帰パターンには、定数パターン、var パターン、およびワイルドカード パターンが含まれています。

定数モード

このモードでは、属性を定数値と照合できます。定数照合では、object.Equals(left, right) メソッドを使用して、2 つが一致するかどうかを判断します。

Var pattern

Var パターンは確実に一致します。このパターンに対応する変数には、is 演算子を呼び出したときに指定された値が割り当てられ、変数の型は静的型によって決まります。

ワイルドカード パターン

ワイルドカード パターンは本質的には var 式ですが、一致結果を気にする必要はありません。

内部実装

このロケーション クラスの例について説明を続けましょう。コンパイラはコンパイル フェーズ中に次の手順を実行します:

変数 $x、$y、$z を作成する

Call Location.is( a , out $x, out $y, out $z) メソッドを実行し、返された結果が true であることを確認します

Constant モード: object.Equals($x, 1) call

Var モード: assign $y to y

ワイルドカードパターン: $z 変数を無視

Switch/Select Case ステートメントブロック

Switch ステートメントブロックの機能が拡張され、パターンマッチング機能が使用できるようになります。これが実際に意味するのは、次のようにステートメントを記述できるということです:

case null:
case String s
case Location(1, var y, *):
ログイン後にコピー

限制

  在目前的规格草稿中,还没有对于范围检查的支持。这意味着你不能编写类似于“a is Location( > 0, 1 to 5, <= 10)”这样的代码。此外目前也不支持在一个列表或迭代器中进行元素匹配。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP と正規表現を使用したパターン マッチング PHP と正規表現を使用したパターン マッチング Jun 13, 2023 pm 03:29 PM

パターン マッチングは、最新のプログラミング言語では非常に一般的な操作です。これは、特定のルールに一致する文字列の部分を検索するために使用されます。 PHP では、パターン マッチングに正規表現を使用すると非常に便利です。この記事では、PHP と正規表現を使用したパターン マッチングについて説明します。まず、正規表現とは何かを理解する必要があります。正規表現は、パターン マッチングに使用される言語です。文字列の特定の部分を検索、置換、検証、抽出するために使用できます。正規表現はいくつかの文字と特殊文字グループで構成されます

PHP の基礎となる開発原則を理解する: 正規表現とパターン マッチング PHP の基礎となる開発原則を理解する: 正規表現とパターン マッチング Sep 08, 2023 am 09:34 AM

PHP の基礎となる開発原則である正規表現とパターン マッチングを理解します。正規表現は、強力なテキスト パターン マッチング ツールです。特殊文字と文法規則を使用することで、文字列の検索、置換、一致を簡単に行うことができます。 PHP の基礎となる開発では、正規表現は、データ検証、URL マッチング、テキスト解析などのさまざまなテキスト処理タスクで広く使用されています。この記事では、PHP の基礎となる開発における正規表現とパターン マッチングの原理を詳細に紹介し、デモンストレーション用のコード例をいくつか示します。まずはPHPについて勉強しましょう

C++ を使用して 0 のうち 1 のパターンを見つける C++ を使用して 0 のうち 1 のパターンを見つける Sep 07, 2023 pm 11:29 PM

この記事では、いくつかの行と列の値を示します。最初の行、最初の列、最後の行、最後の列に 1 が出力され、残りの要素に 0 が出力されるようにボックス パターンを出力する必要があります。たとえば、-入力:行=5、列=4出力: 1111 1001 1001 1001 1111入力:行=8、列=9

Java でパターン関数を使用してパターン マッチングを行う方法 Java でパターン関数を使用してパターン マッチングを行う方法 Jun 26, 2023 pm 02:55 PM

Java のパターン関数は、開発者がテキスト内で正確なパターン マッチングを実行できるようにする非常に強力で柔軟なツールです。今回は、Pattern関数を使ってパターンマッチングを行う方法を紹介します。 Pattern 関数は Java.util.regex パッケージの一部であり、開発者はこれを使用して正規表現を定義および解析できます。正規表現は、テキストを照合および操作するための強力なツールです。文字、数字、特殊文字などの数と出現順序を確認するために使用できます。

PHP でよく使用される正規表現関数 PHP でよく使用される正規表現関数 Jun 20, 2023 am 08:45 AM

ネットワーク技術の継続的な発展により、正規表現の使用は Web 開発に不可欠な部分になりました。 PHP 言語は、文字列を迅速に処理し、開発効率を効果的に向上させるのに役立つ多くの強力な正規表現関数も提供します。次に、PHPでよく使われる正規表現関数について詳しく紹介していきます。 preg_match()preg_match() は、PHP の最も基本的な正規表現関数であり、文字列内の正規表現を照合するために使用されます。

指定されたパターンに一致するファイル内のすべてのパターンを出力する Python プログラム 指定されたパターンに一致するファイル内のすべてのパターンを出力する Python プログラム Sep 16, 2023 pm 08:01 PM

特定のパターンに一致するファイル内の行を検索することは、ログ分析、テキスト処理、データ フィルタリングなどの多くのアプリケーションで一般的な操作です。この記事では、指定されたパターンに一致するファイル内のすべてのパターンを出力する Python プログラムについて説明します。この問題を解決するには、まずファイル内にスキーマを作成して保存します。私たちのタスクは、ファイル内に表示されている正確なパターンをプログラムで作成することです。いくつかの条件を適用すると、指定されたファイル内のパターンが一致するかどうかがチェックされます。 open("file_name.txt", "r") as&a の構文

Redis を使用して PHP でパターン マッチングを実装する Redis を使用して PHP でパターン マッチングを実装する May 15, 2023 pm 06:22 PM

Web 開発では、Redis がキャッシュおよびデータベースとして非常に人気があり、PHP も広く使用されている Web 開発言語です。この 2 つを組み合わせると、PHP で Redis を使用してパターン マッチング機能を実装でき、これにより Web サイトのパフォーマンスとユーザー エクスペリエンスが大幅に向上します。 Redis はメモリベースのデータ ストレージ サービスであるため、読み取りと書き込みの速度が非常に高速です。同時に、Redis はパブリッシュ/サブスクライブ、トランザクション処理、Lua スクリプトなどの多くの高度な機能もサポートしています。

SQLのパターンマッチングとは何ですか?それはどのように機能しますか? SQLのパターンマッチングとは何ですか?それはどのように機能しますか? May 13, 2025 pm 04:09 PM

PatternMatchingInsqlusesthelikeoperatorandRegularexpressionStoseartextextpatterns.ItenablesFlexibledataqueryingwithcardslike%and_、andregexforcomplexMatches

See all articles