我有一個Scala def,它接受來自HTTP POST的參數並解析數據。我從數據庫中提取一個「作業」對象(查詢在調試器中驗證成功,參數與他們需要的一樣),我試圖用新參數更新該作業對象。但是,嘗試分配值是無用的,因爲作業對象保留了所有原始值。如何在Scala中正確設置對象的值?
所有數據庫對象都來自Squeryl。代碼如下:
編輯:添加下面的類和作業對象,以幫助給這個遊戲背景!應用
object Job {
def updateFromParams(params:Params) = {
val job = Job.get(params.get("job_id").toLong).get
val comments = params.get("comments")
val startTime = parseDateTime(params.get("start_time") + " " + params.get("date"))
val endTime = parseDateTime(params.get("end_time") + " " + params.get("date"))
val clientId = params.get("client_id").toLong
val client = Client.get(clientId).get
val name = params.get("job_name")
val startAddressType = params.get("start_address_type")
var startLocationId:Option[Long] = None
val (startAddress, startCity, startProvince) = startAddressType match {
case "client" => getClientAddress(clientId)
case "custom" => (params.get("start_custom_address"),
params.get("start_custom_city"),
params.get("start_custom_province"))
case id => {
startLocationId = Some(id.toLong)
getLocationAddress(startLocationId.get)
}
}
job.comments -> comments
job.startTime -> startTime
job.endTime -> endTime
job.clientId -> clientId
job.name -> name
job.startAddressType -> startAddressType
job.startAddress -> startAddress
job.startCity -> startCity
job.startProvince -> startProvince
Job.update(job)
}
}
我難倒,因爲如果我嘗試job.name -> name
什麼也不會發生,如果我嘗試job.name = name
然後我得到一個斯卡拉reassignment to val
錯誤。嘗試使用var name
而不是val name
時遇到同樣的錯誤。
這顯然是我的一個語法問題,處理這個問題的正確方法是什麼?謝謝!
更多信息:如果這有幫助,這裏是我們玩的工作類!應用:
class Job(
val id: Long,
@Column("name")
val name: String,
@Column("end_time")
val endTime: Timestamp,
@Column("start_time")
val startTime: Timestamp,
@Column("client_id")
val clientId: Long,
@Column("start_address_type")
var startAddressType:String,
@Column("start_address")
var startAddress: String,
/* LOTS MORE LIKE THIS */
) extends KeyedEntity[Long] {
}
'x - > y'創建一個元組''(x,y)'。這不是一個賦值操作符。 'Job'的定義是什麼? – leedm777 2012-02-13 20:21:36
當你說你變成'var name'時,你的意思是在這段代碼中還是在'Job'的定義中? – 2012-02-13 20:23:43
'工作'是一個類和模型在玩!框架。我將在上面的問題中添加該類。 :) – crockpotveggies 2012-02-13 20:23:49