2012-04-12 4 views
9

ダートが関数のオーバーロードをサポートしていないと読んでいます。演算子のオーバーロードをサポートしていますか?はいの場合は、優しいと私はどのように簡単な例でどのように表示されます。そして、私はプログラミングに新しいです。おかげさまで ダーツでオペレータのオーバーロードがサポートされています

+0

ダートは関数のオーバーロード*をサポートしていません。 –

答えて

14

はいダートは、オペレータキーワードとそれに続くオーバーロードしたいオペレータを使用して、オペレータのオーバーロードをサポートしています。

class MyClass { 
    operator ==(MyClass other) { 
    // compare this to other 
    } 
} 

ほぼ内蔵オペレータ全てダーツが代入演算子= 基準等価である、いくつかの顕著な例外を除いてオーバーロードすることができる次の例では、 MyClassのオブジェクトの ==オペレータはオーバーロード演算子 === (これ以上存在しません)。それを演算子オーバーロードの利点については

を使用すると、あなたのオブジェクトに対する操作のための==または+としても知られているセマンティックな意味を持っている事業者を再利用することができます。あなたは+演算子をオーバーロードMatrixクラスを持っている場合たとえば、あなたはラースを拡張する代わりに、より面倒m1.plus(㎡)

+0

は、「その他」が何か特別なものか、何か他の名前を付けることができるかどうかを教えてくれます。同様の==(MyClass ggg) –

+1

@MuhammadUmer他の名前は何でも構いません。あなたが比較しているクラスオブジェクトのパラメータ名です。つまりthis == otherまたはthis + other –

+0

引数は同じ型でなければなりません。 ScalaのList cons演算子::のような演算子を作成できますか?左の型は新しい頭を作る要素の型、右の型はListの型ですか? – pohl

6

の構文M1 + M2を使用して2つの行列を追加することができますインライン関数の構文を使用して演算子をオーバーロードすることもできます。

class MyClass { 
    operator ==(MyClass o) => id == o.id; 
} 
関連する問題