Выражение типа serializable не соответствует типу Option String scala - PullRequest
0 голосов
/ 07 января 2019

Я получаю следующую ошибку времени компиляции здесь:

def fun1(item: TextMapWritable, field:String, language: String): Option[String] = {
    fun2(item, field, language)
      .getOrElse(fun3(item, field))
  }

fun2 и fun3 возвращают Option [String], но когда я пытаюсь использовать их внутри fun1, я получаю эту ошибку:

Выражение типа сериализуемый не соответствует типу Option String * 1007 Скала *

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Это то, что вы хотите

def fun1(item: TextMapWritable, field:String, language: String): Option[String] =
  fun2(item, field, language) orElse fun3(item, field)

Проблема с исходным кодом заключается в том, что getOrElse отбирает String из Option, но в результате получается Option[String], поэтому вы хотите сохранить строку в Option

0 голосов
/ 07 января 2019

Вы должны использовать orElse

def fun1(item: TextMapWritable, field:String, language: String): 
Option[String]= {
fun2(item, field, language)
  .OrElse(fun3(item, field))
}

потому что getOrElse возвращает значение опции, если опция не пустая, в противном случае возвращает результат оценки по умолчанию. Пожалуйста, обратитесь к этому документу getOrElse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...