"a" + 3.toString res0: java.lang.String = a3 是相同的: scala>-6ren">
gpt4 book ai didi

Scala "a"+ _.toString 的行为不像 "a".+(_.toString)

转载 作者:行者123 更新时间:2023-12-03 18:16:26 27 4
gpt4 key购买 nike

据我所知,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" + some function of unknown type对编译器没有多大意义。

关于Scala "a"+ _.toString 的行为不像 "a".+(_.toString),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11311290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com