JavaScript での演算子のオーバーロード

Anika Tabassum Era 2024年2月15日
JavaScript での演算子のオーバーロード

初期段階では、JavaScript には演算子のオーバーロード関数を明示的に定義する方法がありませんでした。 その後、コマンド npm install operator-overloading --save を使用して構文を有効にする必要があるという更新がありました。

var overload = require('operator-overloading') を示す変数を開始し、この場合の overload 関数を定義します。 しかし、最新のユース ケースには、演算子のオーバーロードの関数スコープを定義するより柔軟な方法があります。

テストが簡単なため、Babel Dev の依存関係に依存します。 次のセグメントでその必需品をインストールするためのガイドを説明し、例を紹介します.

JavaScript で演算子のオーバーロードを実装する

基本的な開始は、ディレクトリを作成し、必要な package.json を設定することです。 そのため、最初に operator overloading という名前のフォルダーを作成し、Visual Studio Code で開きます。

VSCode のターミナルで、次のコマンドを実行します。

npm init -y
npm install

これらのコマンドを実行した後、package.json はフォルダーに追加されません。 1つの package-lock.json があります。 この ポータル からこのファイルの内容を解凍し、内容をコピーして、ベース フォルダーに作成する必要がある package.json という名前の新しいファイルに貼り付けます。

次に、ターミナルで次のコマンドに従います。

npm install --save-dev @babel/core @babel/preset-env @babel/cli @babel/node
npm install --save-dev @jetblack/operator-overloading

次に、ルート ディレクトリに .babelrc ファイルを作成し、その内容を次のように設定します。

{
    "presets": [
        [
            "@babel/preset-env",
            {
                "targets" : {
                    "node": "current"
                }
            }
        ]
    ],
    "plugins": ["module:@jetblack/operator-overloading"]
}

したがって、オペレーターのオーバーロードを有効にするためのすべての依存関係が開始されます。 あとは、JavaScript ファイルを作成し、コードを入力して、演算子のオーバーロードのメカニズムを確認するだけです。

コードスニペット:

class Point {
  constructor(x, y) {
    this.x = x this.y = y
  }
  [Symbol.for('+')](other) {
    const x = this.x + other.x
    const y = this.y + other.y
    return new Point(x, y);
  }
}
// Built in operators still work.
const x1 = 2
const x2 = 3
const x3 = x1 - x2
console.log(x3)
// Overridden operators work!
const p1 = new Point(5, 5)
const p2 = new Point(2, 3)
const p3 = new Point(4, 2)

const p4 = p1 + p2
const p5 = p4 + p3
console.log(p5)

上記のコードの出力をテストするには、VSCode で Bash ポータルを開き、次を実行してみてください。 技術的には、babel-node.cmd を介してコードをテストします。

./node_modules/.bin/babel-node.cmd ex.js

ここで、ex.js は JavaScript ファイル名です。 推測される出力は、期待どおりです。 それをチェックしよう。

出力:

演算子のオーバーロード

class Point は、2つのパラメーターを持つコンストラクターを持つ開始クラスです。 ここでの演算子のオーバーロードの場合、[Symbol.for(+)](other) という構文があります。

異なる演算子では、この構文が変わります。 ただし、p1 および p2 オブジェクトには、プロセス全体で合計された対応する x があります。

通常、一番左または開始インスタンスは this.x(x of p1 = 5) で定義され、p2 = 2 の次の xother.x で示されます。 これが p1.add(p2) を実行する基本的な考え方です。

すべてのユーザー定義クラスを合計した最終結果では、x=11y=10 が得られます。

演算子のオーバーロードを説明する別の方法があります。 ExtendScript は、UX ドメインを介して操作を表現するファセットの 1つです。 また、PaperScript には動作原理を定義する優れた方法があります。

proxySymbol を使用してタスクを完了することができます。 また、toString()valueOf() は、この関数の概念を提示するために簡単に機能します。

オーバーロードをサポートしない演算子は、typeof===!==&&||、および instanceof です。

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook

関連記事 - JavaScript Operator