Так у меня есть следующий код:Scala Compiler (2.11.7) аномалию с Play JSON Пишет
Основание:
import play.api.libs.json.{JsNull, Json, JsValue, Writes}
case class Cost(cost: Option[Double])
компилируется:
case object Cost {
def writes = new Writes[Cost] {
override def writes(r: Cost): JsValue = {
val cost = r.cost.map(Json.toJson(_)).getOrElse(JsNull)
Json.obj(
"cost" -> cost
)
}
}
}
Но это не компиляция
case object Cost {
def writes = new Writes[Cost] {
override def writes(r: Cost): JsValue = {
Json.obj(
"cost" -> r.cost.map(Json.toJson(_)).getOrElse(JsNull)
)
}
}
}
Ошибка компилятора заключается в следующем ING:
type mismatch;
[error] found : Object
[error] required: play.api.libs.json.Json.JsValueWrapper
[error] "cost" -> r.cost.map(Json.toJson(_)).getOrElse(JsNull)
В последнем случае, если я использую .asInstanceOf [JsValue] он работает, но с IntelliJ серости это, говоря, что это нужно, поскольку она не может быть ничего, что JsValue в любом случае. Что может быть причиной того, что компилятор Scala (2.11.7) не обнаруживает класс должным образом?
Компиляция непосредственно с SBT? – cchantep
Да компиляция из SBT. – mpartan