6

名前付きパラメーターを使用してケースクラスを作成することは可能ですか? コンストラクターで名前付きパラメーターを使用してケースクラスオブジェクトを構築することを意味します。

私のケースクラスには多くのフィールドがあります。多くの名前のないパラメーターを持つコンストラクターを使用すると、エラーが発生しやすくなります。

私は取得したいと思います(現時点では動作しない例です):

case class X(x0:String, x1:Int, x2:String)
val x = X(x0="Xstring", x1=12, x2="x2String")

回避策として、以下の抜粋に示すようなファクトリ メソッドを提供できますが、これは醜い解決策です。

case class X(x0:String, x1:Int, x2:String)
object X {
    private nullX = X(null, null, null)
    def createX = nullX.copy _
}

val x = X.createX(x0="Xstring", x1=12, x2="x2String")

手がかりはありますか?:)

編集: これは intellij idea scala プラグインの一部の古いバージョンのバグでした。もう反対票を投じないでください;)

4

1 に答える 1

13

名前付き引数とデフォルト引数はScala 2.8で導入されました

Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_27).
Type in expressions to have them evaluated.
Type :help for more information.

scala> case class X(x0:String, x1:Int, x2:String)
defined class X

scala> val x = X(x0="Xstring", x1=12, x2="x2String")
x: X = X(Xstring,12,x2String)
于 2012-08-20T12:42:46.400 に答える