私は、次の特性を持っている:奇妙なエラー
trait SomeTrait {
def doSomething[V](msg: Message[V]): Message[V]
}
メッセージ[V]以下のようにケースクラスです:
case class Message[V](elems: Map[String, V])
が、私は今、doSomethingのを呼び出すメソッドを持っているが以下の方法:
val someWork = new SomeTrait {
override def doSomething[Int](msg: Message[Int]): Message[Int] = {
msg.copy(elems = msg.elems.map {
case (k, v) => (k, v + 1) // It fails here!!!
})
}
}
私はそれを言って奇妙なコンパイラエラーを取得:
Error:(16, 32) type mismatch;
found : Int(1)
required: String
Error occurred in an application involving default arguments.
case (k, v) => (k, v + 1)
私はどこか愚かでしたか?
注: '+'は、デフォルトの暗黙的に「String」に暗黙的に変換されるため、例外的にエラーメッセージを生成します。あなたが '*'で置き換えると、より賢明なエラーが発生します:value *は、型intのメンバではありません。 – Suma