如果特征Function2签名为
trait Function2[-T1, -T2, +R] extends AnyRef
为什么我不能创建这样的函数
val f2 : (String, String) => Int = new Function2[String, String, Int] {
def apply(s1 : String, s2 : String) = s1.length + s2.length
}
并像这样使用它
val listOfFullNames : List[(Any, Any)] = List(("Mark","Smith"), ("Kim","Hughes"), ("Zoe","Zaldana"), ("Matt","Damon"))
val output3 = listOfFullNames.map(x => f2(x._1, x._2))
答案 0 :(得分:3)
前两个类型参数的矛盾性意味着Function2[Any,Any,Int]
是Function2[String,String,Int]
的子类型,因为任何将两个Any
值映射到Int
的函数都可以应用于两个String
值,因此也可以视为函数(String,String) => Int
。