C# 6 と VB 12 はパターン マッチングを追加しようとしています
関数型プログラミング言語に由来するもう 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)”这样的代码。此外目前也不支持在一个列表或迭代器中进行元素匹配。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

PatternMatchingInsqlusesthelikeoperatorandRegularexpressionStoseartextextpatterns.ItenablesFlexibledataqueryingwithcardslike%and_、andregexforcomplexMatches
