Почему я получаю вместо "Строка" вместо "Строка" в Scala

Почему я получаю объект [Some] вместо объекта [String]? Объект Some не будет работать как строковый параметр в вызове метода.

config def возвращает String, поэтому я ожидаю, что тип будет String. Но когда я набираю" Hello" Scala, верните его.

код

def config(s: String) = Play.current.configuration.getString(s).toString()
 Logger.info(config("recaptcha.publicKey"))
 Logger.info("Hello")

Выход

[info] application - Some(6LeDMdASAAAAAC4CFIDY-5M7NEZ_WnO0NO9CSdtj)
[info] application - Hello
2 ответа

Вы необязательно вызываете toString() на Option[String] (который возвращает Play.current.configuration.getString()), попробуйте следующее:

def config(s: String) = Play.current.configuration.getString(s).get

или возможно предпочтительно:

Play.current.configuration.getString(s).getOrElse("some default")


getString возвращает параметр [String], чтобы он мог вернуть пустое значение, когда ничего не вернуть. Когда есть что-то вернуть, он возвращает Some (string), и вы можете получить внутреннюю строку, используя метод get().

licensed under cc by-sa 3.0 with attribution.