Dart言語チュートリアル-オーバーライドの問題

ネットスキンク

Dart Language Walkのこのコードスニペットは失敗しますが、このセクションの下オーバーライド演算子のセクションを参照してくださいここに理由は何ですか?

  class Vector {
   final int x, y;
  
   Vector(this.x, this.y);
  
   Vector operator +(Vector v) => Vector(x + v.x, y + v.y);
   Vector operator -(Vector v) => Vector(x - v.x, y - v.y);
   // use this and the assert will work
   // bool operator ==(Vector v) => x == v.x && y == v.y;
   // See encubus accepted answer below.

  
   Dump() {
     print(this.x);
     print(this.y);
   }


   // Operator == and hashCode not shown. For details, see note below.
   // ···
  }

  final v = Vector(2, 3);
  final w = Vector(2, 2);

  var x = v+w;
  x.dump();
  assert(x == Vector(4,5));
  assert((v + w) == Vector(4, 5));

すべてのアサートは失敗しますが、x.dump()の出力は4と5です。コードを変更してv + wの周りに()を追加し、+オーバーライドの結果をチェックするようにしました。和。

キューブで

==オペレータは、Vectorクラスのために再定義されていません

//演算子==とhashCodeは表示されていません。

それを使用するに==は、Vectorクラスにを実装する必要があります。

https://api.dart.dev/be/175383/dart-core/Object/operator_equals.html https://api.dart.dev/be/175383/dart-core/Object/hashCode.html

サブクラスが等式演算子をオーバーライドする場合は、一貫性を維持するために、hashCodeメソッドもオーバーライドする必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オーバーライドの問題

分類Dev

オーバーライドでの非同期の問題の回避

分類Dev

UICollectionViewFlowLayoutの問題でlayoutAttributesForElementsInRectをオーバーライドする

分類Dev

オーバーライド例の問題

分類Dev

SpringバッチでのBeanの問題のオーバーライド

分類Dev

JoomlaVirtuemartカテゴリアイテムオーバーライドの問題

分類Dev

関数オーバーライドの問題のワードプレス

分類Dev

Mongodb c ++ドライバーの問題

分類Dev

MSAccessドライバーの問題

分類Dev

SeleniumChromeドライバー74.0.3729.6の問題

分類Dev

ATIFglrxドライバーの問題

分類Dev

AngstromUSBドライバーの問題

分類Dev

Broadcomドライバーの問題

分類Dev

NVIDIAドライバーの問題

分類Dev

SMBusドライバーの問題

分類Dev

Kali LinuxNvidiaドライバーの問題

分類Dev

Realtek ドライバーの DNS 問題

分類Dev

クラスオーバーライドの定義時の問題(__not__)

分類Dev

メソッドのオーバーライドに関する問題

分類Dev

.equals()メソッドのオーバーライドに関する問題

分類Dev

SSHセッションでのオーディオドライバの問題

分類Dev

オーバーロードの問題

分類Dev

ウェブサイト上のモバイルCSSポーランド語/タッチアップの問題

分類Dev

コンストラクターのオーバーロードの typescript インテリセンスの問題

分類Dev

トップバナーワードオーバーレイの配置の問題

分類Dev

自然言語分類子のチュートリアル-500エラーが発生しました

分類Dev

オーバーライドの問題:オブジェクトにオーバーライドするメソッドが存在しますか?

分類Dev

タイプの問題をオーバーライドするオブジェクトプロパティ

分類Dev

サーブ()をオーバーライドするときのページモデルの問題

Related 関連記事

  1. 1

    オーバーライドの問題

  2. 2

    オーバーライドでの非同期の問題の回避

  3. 3

    UICollectionViewFlowLayoutの問題でlayoutAttributesForElementsInRectをオーバーライドする

  4. 4

    オーバーライド例の問題

  5. 5

    SpringバッチでのBeanの問題のオーバーライド

  6. 6

    JoomlaVirtuemartカテゴリアイテムオーバーライドの問題

  7. 7

    関数オーバーライドの問題のワードプレス

  8. 8

    Mongodb c ++ドライバーの問題

  9. 9

    MSAccessドライバーの問題

  10. 10

    SeleniumChromeドライバー74.0.3729.6の問題

  11. 11

    ATIFglrxドライバーの問題

  12. 12

    AngstromUSBドライバーの問題

  13. 13

    Broadcomドライバーの問題

  14. 14

    NVIDIAドライバーの問題

  15. 15

    SMBusドライバーの問題

  16. 16

    Kali LinuxNvidiaドライバーの問題

  17. 17

    Realtek ドライバーの DNS 問題

  18. 18

    クラスオーバーライドの定義時の問題(__not__)

  19. 19

    メソッドのオーバーライドに関する問題

  20. 20

    .equals()メソッドのオーバーライドに関する問題

  21. 21

    SSHセッションでのオーディオドライバの問題

  22. 22

    オーバーロードの問題

  23. 23

    ウェブサイト上のモバイルCSSポーランド語/タッチアップの問題

  24. 24

    コンストラクターのオーバーロードの typescript インテリセンスの問題

  25. 25

    トップバナーワードオーバーレイの配置の問題

  26. 26

    自然言語分類子のチュートリアル-500エラーが発生しました

  27. 27

    オーバーライドの問題:オブジェクトにオーバーライドするメソッドが存在しますか?

  28. 28

    タイプの問題をオーバーライドするオブジェクトプロパティ

  29. 29

    サーブ()をオーバーライドするときのページモデルの問題

ホットタグ

アーカイブ