2

ケースクラスでは、この冗長な命名を行う傾向があります。

abstract class MyTree
case class MyTreeNode (...)
case class MyTreeLeaf (...)

MyTreeにノードとリーフを定義することはできませんか? ここでのベストプラクティスは何ですか?

4

2 に答える 2

4

クラス、トレイト、オブジェクトの名前はパッケージ スコープであるため、パッケージを使用して他のノードやリーフとのエイリアシングに対する保険を提供し、それらを単純Nodeに andと呼びLeaf、他のスコープ コンストラクト (つまりオブジェクト) の外側に残しますか?

于 2010-05-08T23:45:28.957 に答える
2

ネストされたクラスは Scala ではパスに依存するため、ケース クラスを抽象スーパークラス内に配置することはお勧めしません。どちらかといえば、それらをコンパニオン オブジェクト内に配置できます。

abstract class MyTree
object MyTree {
  case class Node (...) extends MyTree
  case class Leaf (...) extends MyTree
}

(注:私はこれをテストしていません...)

于 2010-05-08T22:23:27.280 に答える