私は Java のバックグラウンドから来て、Scala を学び始めたばかりです。関数の型パラメーターと型の推論を理解しようとしています。これは、Scala ドキュメントの標準的な例です。
class Decorator(left: String, right: String) {
def layout[A](x: A) = left + x.toString() + right
}
object FunTest extends Application {
def apply(f: Int => String, v: Int) = f(v)
val decorator = new Decorator("[", "]")
println(apply(decorator.layout, 7))
}
apply
関数に型パラメーターを適用して厳密v
な型を保持しようとすると、型の不一致が発生します。ここで型が推論されないのはなぜですか?
def apply[B](f: B => String, v: String) = f(v) //Type mismatch
def apply[B](f: B => String, v: B) = f(v) //Works fine
ありがとう