、::
クラス(短所)が定義されているクラスList
にブック「Scalaでプログラミング」の第22章において
final case class ::[T](hd: T, tl: List[T]) extends List[T] {
//...
}
::
方法のように定義される:
def ::[U >: T](x: U): List[U] = new scala.::(x, this)
なぜnew
がfinal
case
class ::
のインスタンスを作成するために必要ですか?純粋に曖昧さ回避のためですか?もしあればあなたがnew
とケースクラスをインスタンス化することができます
class Foo(val value: Int)
object Foo { def apply(value: Int) = new Foo(value) }
val x = new Foo(42) //
val y = Foo(42) // both work the same
:あなたは自動的にapply
方法あなたは普通のクラスでこれを行うことができますと同じように、コンストラクタを呼び出しコンパニオンオブジェクトを取得するケースクラスで
finalは、クラスを拡張できないことを意味します。インスタンスの作成とは何の関係もありません:-)。ケースクラスは、基本的に 'マッチケース'ブロックで比較できるクラスです。 – aishwarya