Scala“a”_.toString的行为不像“a”. (_.toString)
发布时间:2020-12-16 18:26:40 所属栏目:安全 来源:网络整理
导读:据我所知,Scala中的中缀运算符用法应该等同于方法的调用.所以: scala "a" + 3.toStringres0: java.lang.String = a3 是相同的: scala "a".+(3.toString) res1: java.lang.String = a3 当有一个占位符时,我遇到了一个没有发生这种情况的场合.我正在做一些更
据我所知,Scala中的中缀运算符用法应该等同于方法的调用.所以:
scala> "a" + 3.toString res0: java.lang.String = a3 是相同的: scala> "a".+(3.toString) res1: java.lang.String = a3 当有一个占位符时,我遇到了一个没有发生这种情况的场合.我正在做一些更复杂的事情,但它可以被提炼为: scala> def x(f:(Int)=>String) = f(3) x: (f: Int => String)String scala> x("a" + _.toString) res3: String = a3 到现在为止还挺好.但… scala> x("a".+(_.toString)) <console>:9: error: missing parameter type for expanded function ((x$1) => x$1.toString) x("a".+(_.toString)) 这有什么区别?我错过了什么? 霍尔迪 解决方法
_占位符只能出现在其函数中最顶层的Expr中.这意味着
(_.toString) 本身就是一个函数,“a”某些未知类型的函数对编译器没有多大意义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |