加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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”某些未知类型的函数对编译器没有多大意义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读