5

为什么我得到的是 [Some] 对象而不是 [String] 对象?
Some 对象在方法调用中不能用作字符串参数。

config def返回 a所以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
4

2 回答 2

12

您不必要地调用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")
于 2012-04-13T22:24:03.797 回答
10

getString返回一个Option[String],这样在没有返回的时候可以返回一个空值。当有东西要返回时,它会返回 Some(string) ,您可以使用 get() 方法获取内部字符串。

于 2012-04-13T22:22:48.447 回答