1
私は、反復処理可能に関数を適用し、述語が真である最初にマッピングされた結果を返し組み合わせた地図と-見つける機能書いた:Scalaの型推論誤差
implicit class EnhancedIterable[A, B[X] <: Iterable[X]](it: B[A]) {
def mapAndFind[B](f: A => B, p: B => Boolean): Option[B] = {
var result: Option[B] = None
for (value <- it if result.isEmpty) {
val r = f(value)
if (p(r))
result = Some(r)
}
result
}
}
を問題私がヒットします私は期待通りの機能を使用しようとコンパイルエラー:予想
val names = Seq("Jose", "Chris", "Carlos", "Stephan")
names.mapAndFind(
_.length,
_ > 5 // Error
)
型の不一致、:実際の(NotInferedB)=>ブール、:(Nothing)で=>どれ
物事がうまくコンパイルけれども私は型ヒントを使用する場合:
names.mapAndFind(
_.length,
(len: Int) => len > 5
)
をf
からInt
ようなタイプB
推測されていないのはなぜ?
は完璧な理にかなっています。答えてくれてありがとう! –