【问题标题】:scala case class named parametersscala案例类命名参数
【发布时间】:2012-08-20 12:23:08
【问题描述】:

在 scala 中是否有(或将在最近的特性中)可以创建带有命名参数的案例类?我的意思是在构造函数中使用命名参数来构造案例类对象。

我的案例类有很多字段。构造函数带有很多未命名的参数很容易出错。

我想得到(目前不工作的例子):

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 插件中的错误。 请不要再投反对票了;)

【问题讨论】:

  • 我使用的是 scala 2.9.1-1。我将您的声明复制到 REPL 中,它确实有效。
  • Scala 已经有了命名和默认参数。
  • 检查您的 Scala 版本:scala -version

标签: scala case-class


【解决方案1】:

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)

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2019-09-26
    • 2017-11-24
    相关资源
    最近更新 更多