我很困惑这里的问题是什么。我有一个功能:
def myFunc(activity:Activity):updatedActivity = {
//var updatedActivity:Activity = activity <- This doesnt work either
var updatedActivity:Activity = activity.copy()
val params = Params (
"Attribute"
)
updatedActivity.parameters = params
updatedActivity
}
这不起作用,因为重新分配属性updatedActivity.parameters = params
会引发val错误的重新分配,即使updatedActivity是var。如何更新传入的活动参数并将其返回?
答案 0 :(得分:4)
updatedActivity可以是var但是类Activity有一个名为parameters的字段,它是一个val。 所以必须在施工期间分配。
如果是案例类,请尝试:
def myFunc(activity:Activity):updatedActivity = {
val params = Params (
"Attribute"
)
activity.copy(parameters = params)
}
如果它不是case类,它必须作为常规参数传递给构造函数,即
new Activity(params)
答案 1 :(得分:1)
我假设Activity
是case class
。即使updatedActivity
是var
,基础值(案例类)也是不可变的,这意味着您可以重新分配updatedActivity
,但不能更改当前值。相反,你可以返回:
updatedActvity.copy(parameters = params)