我有一個方法如下:動態添加元素後,模式匹配匹配的情況下映射
protected def extract(implicit params:Params) =
Map(
"address" -> params.address,
"city" -> reconcileCity,
"region" -> params.region,
)collect {
case (k, v) if v.isDefined => k -> v.get
}
我想從另一個方法代替城市的價值如下:
protected def reconcileCity(implicit params:Params)
params.city match {
case Some("madras") => "Chennai"
case Some("bangalore") => "Bengaluru"
case Some("gurgaon") => "Gurugram"
case _ => params.city.mkString
}
但我得到如下錯誤:
Error:(177, 24) value isDefined is not a member of java.io.Serializable
case (k, v) if v.isDefined => k -> v.get
Error:(177, 44) value get is not a member of java.io.Serializable
case (k, v) if v.isDefined => k -> v.get
請幫忙。
什麼是你的地圖值的類型?看起來編譯器推斷'java.io.Serializable'是所有值類型的共同祖先。 –
對於下面的情形: '保護的高清提取物(隱含PARAMS:PARAMS)= 地圖( 「地址」 - > params.address, 「城市」 - > params.city, 「區域」 - > PARAMS。如果v.isDefined => k - > v.get }' }它收到{ )案件(k,v)。只有在我從方法'extract'調用通用方法'reconcileCity'後,我獲取錯誤的方法'reconcileCity'的類型是Serializable – b1399877