为什么scala不能在部分方法中推断类型?
看这个例子:
def hello(a:String,b:String) = println(a + ":" + b) val m1 = hello("aaa",_ ) m1("bbb") 它不能被编译,我需要添加类型到partial方法: val m1 = hello("aaa",_: String) 为什么Scala不知道方法的第二个参数hello是String? 解决方法
Scala的类型推断是基于流的.方法和函数需要显式参数类型,用于推断其他类型.不能从方法或函数体推断参数类型.然而,有时,参数类型是从外部上下文中知道的,然后不必被标记.两个例子,
val f: String => Unit = hello("aaa",_) val s = Seq(1,2).map(_+1) // Seq[Int].map expects a function of Int argument type 以下是Martin Odersky关于Scala类型推理与ML和Haskell相比的限制的引用.挑战包括Scala的超载,记录选择和子类型化,以及需要保持简单,
资料来源:评论在帖子Universal Type Inference is a Bad Thing. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |