こんにちは、StackOverflowです。
ここで私の最初の質問を手伝ってくれることを願っています:)
だから私はScala型推論に問題があります。コードは次のとおりです。
object Problem {
def ok(fn: (String) => Unit) = fn("")
// type mismatch; found: java.lang.String("") required: String
def fail[String](fn: (String) => Unit) = fn("")
}
Scalaはここでどのような文字列を期待していますか?
これは私の問題を説明するための最小限の例であることに注意してください。元の問題は、より複雑なインターフェイス(正確には、PlayのIteratee)を実装しようとしたときに発生したため、いいえ、除外すること[String]
はできません。(誰かが実際のコードが役立つと思うなら、私はそれを提供します。)
試してみdef fail[java.lang.String] ...
ましたが、と書いてありexpected ], found .
ます。
Scala String vs java.lang.String-vs.についての良い説明を与える型推論java.lang.String
を読みましたがscala.Predef.String
、それでも特定の問題の解決策を思い付くことができませんでした。
何か案は?
編集:これが、 私がhttp://www.playframework.org/documentation/api/2.0/scala/play/api/libs/iteratee/Iteratee.htmlString
の代わりに書いたものだけを実装しようとした最初の試みですT
。(T
コンパイルすると、それは理にかなっています!)私の失敗。明らかに、私はすべての型パラメーターに少し圧倒されました。
val stream = WS.url("url").get({ headers =>
(new Iteratee[Array[Byte], String] {
def fold[T](done: (String, Input[Array[Byte]]) => Promise[T],
cont: (Input[Array[Byte]] => Iteratee[Array[Byte], String]) => Promise[T],
error: (String, Input[Array[Byte]]) => Promise[T]): Promise[T] =
{
done("something", Input.Empty)
}
})
})
よろしく、ヘンドリック