1. ホーム
  2. scala

[解決済み] Scalaのcase classとclassの違いは何ですか?

2022-03-22 03:52:32

質問

Googleで検索してみると case classclass . クラスでパターンマッチを行う場合は、case classを使用するようにと皆さんおっしゃっています。それ以外の場合はクラスを使い、さらにイコールやハッシュコードのオーバーライドなどの特典についても言及されています。しかし、クラスではなくケースクラスを使うべき理由はそれだけなのでしょうか?

Scalaのこの機能には、何かとても重要な理由があるのでしょうね。その説明や、Scalaのケースクラスについて詳しく知ることができるリソースはあるのでしょうか?

どのように解決するのですか?

ケースクラスは、次のように見ることができます。 コンストラクタの引数にのみ依存する、平易で不変のデータ保持オブジェクト。 .

この機能概念により

  • は、コンパクトな初期化構文 ( Node(1, Leaf(2), None)) )
  • パターンマッチングで分解する
  • 等価比較が暗黙のうちに定義されている

継承と組み合わせることで、ケースクラスは 代数的データ型 .

オブジェクトが内部でステートフルな計算を行ったり、他の種類の複雑な振る舞いをする場合は、通常のクラスであるべきです。