1

私は Scala を初めて使用しますが、既にケース クラスを使用しています。ここに要約されているように、通常のクラスとケース クラスの主な違いは何かを理解しました。

ケースクラスを取り除くことさえ考えていませんが、たとえば、これを変換するために必要なコードは何かを知りたいです:

class Tweet(val user: String, val text: String) {
  override def toString: String =
    "User: " + user + "\n" +
    "Text: " + text + "]"
}

完全な「互換性のある」クラスに。つまり、ケースクラスの同じ「動作」をコーディングしたいのですが、caseキーワードを使用しません。これは可能ですか、またはコンパイラーはコードを介して取得できないことを行いますか (最適化を除く)?

私が求めていることを明確にするために、ケースクラスが必要な場合は常に case キーワードを使用しますが、一生のうちに、Scala コンパイラが (一般的な意味で) 何をしてくれるかを知りたいと思います。コード用語。

編集: 追加の疑問:コンパイラは、実行中に異なる動作を観察できるように、標準のケースクラスとは異なる方法で私のハンドコーディングされたクラスをマークしますか?

4

1 に答える 1