5

[String]オブジェクトではなく[Some]オブジェクトを取得するのはなぜですか?
Someオブジェクトは、メソッド呼び出しで文字列パラメーターとして機能しません。

config defaを返す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 に答える