Scala案例类命名参数

6

在Scala中是否有(或将来会有)可能创建具有命名参数的case class?我的意思是使用构造函数中的命名参数构造case class对象。

我的case class有很多字段。如果构造函数有很多未命名参数,则容易出错。

我想要得到(目前不起作用的示例):

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插件的一个错误,是一些旧版本的问题。请不要再投票了;)

3
我正在使用 Scala 2.9.1-1 版本。我将您的语句复制到 REPL 中,它确实可以工作。 - tgr
4
Scala已经拥有命名参数和默认参数。 - Kaito
使用以下命令检查您的Scala版本:scala -version - Jack
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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接