マップ キーとしての機能: 言語制限のため不可能
プログラミングの領域では、マップは、以下に基づいてデータを整理および取得するために不可欠です。キーと値のペア。ただし、提供されているコード スニペットに示されているように、関数をマップ キーとして利用しようとすると、エラーが発生する可能性があります。
このコード スニペットは、アクション (関数) をキーとして使用してマップを作成しようとします。ただし、コンパイラは「無効なマップ キー タイプのアクション」というエラーを当然発生させます。このエラーは、言語の基本的な制限に起因します。
言語仕様で概説されているように、比較演算子 (== および !=) はマップのキー タイプに対して明確に定義されている必要があります。残念ながら、関数は変更可能な性質とエイリアシングの可能性があるため、この要件を満たしていません。
説明のために、test と test2 という 2 つの関数を考えてみましょう。たとえ動作が同じであっても、メモリ内では別個のオブジェクトです。 x[test] = true および x[test2] = false を割り当てると、マップ内に 2 つの別々のキーと値のペアが作成され、マップ キーの一意性制約に違反します。
したがって、使用することが望ましい場合もありますが、特定のシナリオではマップ キーとして機能しますが、現在の言語制限によりこれを実行できません。このような制限が再評価されるまでは、関数をキーとして受け入れるデータ構造を使用するなどの代替ソリューションが実行可能な代替手段となります。
以上がプログラミング言語で関数をマップ キーとして使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。