Как определить предполагаемый тип, содержащий Serializable

Остановился на этом. Работа с PlayJSON и их JsObject.

Для удаления бородавок маркировка map вызвать с морковкой (^) и сказать в этой строке Inferred тип, содержащий Serializable. Код функционален и работает, но ему интересно узнать, почему инструмент помечает это и как устранить эту ошибку.

    def getPrintVersionOfJsonObj(jsObj: JsObject): JsObject = {
     val fieldValueMap: Seq[(String,JsValue)] = jsObj.fields.map {
      case (fieldName, fieldValue: JsNumber)  => (fieldName, fieldValue)
      case (fieldName, fieldValue: JsBoolean) => (fieldName, fieldValue)
      case (fieldName, fieldValue: JsString)  => (fieldName, fieldValue)
      case (fieldName, fieldValue: JsArray)   => (fieldName, convertJsArrayToPrettyString(fieldValue))
      case (fieldName, fieldValue: JsObject)  => (fieldName, getPrintVersionOfJsonObj(fieldValue))
      case (fieldName, fieldValue: JsValue)   => (fieldName, JsString(Json.prettyPrint(fieldValue)))
  }

  JsObject(fieldValueMap)
}

JSObject.fields является scala.collection.Seq[scala.Tuple2[scala.Predef.String, play.api.libs.json.JsValue]]

Что меня смущает, так это то, что вы знаете тип возвращаемого значения для этого val fieldValueMap и вы знаете тип jsObj.fields

1 ответ

Вы уверены, что это даже компилируется (я не вижу, как, если это делает)?

Первый (например) case вашей match, возвращает (String, JsNumber)в то время как четвертый возвращается (что кажется) (String, String), Единственный общий супер тип этих двух типов SerializableИтак, вот что это значит.

Другие вопросы по тегам