scala为对象赋值

时间:2017-08-23 09:12:27

标签: scala playframework

我有以下代码:

 def getContentComponents: Action[AnyContent] = Action.async {
        contentComponentDTO.list().map(contentComponentsFuture =>
          contentComponentsFuture.foreach(contentComponentFuture =>

            contentComponentFuture.typeOf match {
              case 5 =>
                contentComponentDTO.getContentComponentText(contentComponentFuture.id.get).map(
                  text => contentComponentFuture.text = text.text
                )
            }
          )
            Ok(Json.toJson(contentComponentsFuture))
        )

并在分配值时收到此错误消息:

enter image description here

有没有办法解决这个问题?

我想过创建一个副本,但那意味着我以后会做很多其他事情。如果我可以重新分配价值,对我来说会容易得多。

感谢

2 个答案:

答案 0 :(得分:1)

不幸的是,这是不可能的,因为contentComponentFuture.text是一个不可变属性,所以你不能像这样改变它的值。

改变"的唯一方法作业对象的值是实际创建一个全新的实例并丢弃旧的实例。这是处理不可变对象时的标准做法。

抱歉这个坏消息。

答案 1 :(得分:1)

刚刚找到解决方案......

在模型中,我必须将属性定义为var

case class ContentComponentModel(
                              id: Option[Int] = None,
                              typeOf: Int,
                              name: String,
                              version: String,
                              reusable: Option[Boolean],
                              createdat: Date,
                              updatedat: Date,
                              deleted: Boolean,
                              processStepId: Int,
                              var text: Option[String],