我在 Scala REPL 上创建了这个函数
scala> val multiDouble = (input :Double) =>
| {
| val toMulti = 2;
| toMulti * input
| }: Double
Run Code Online (Sandbox Code Playgroud)
输出是val multiDouble: Double => Double = Lambda$1351/1709493124@7b44bfb8
根据我的研究,应该是val multiDouble: Double => Double = <function01>
我不明白为什么 Scala REPL 打印Lambda$1351/1709493124@7b44bfb8而不打印<function01>.
在 Scala 2.11- 中,函数被打印为<function01>,在 Scala 2.12+ 中,它们被打印为Lambda$.../...@...
2.12 lambda 有不同的toString https://github.com/scala/scala-dev/issues/67
@retronym:
如果我们使用
LambdaMetaFactory,这是不可避免的,因为它没有公开提供 的实现的方法toString。(接口中的默认方法本身也不能覆盖对象中的方法)。我们可以
ScalaLambdaMetafactory精确地生成我们想要的内容,但风险是我们将放弃当前或未来针对 LMF 的 HotSpot 优化。
https://contributors.scala-lang.org/t/functionns-tostring-should-show-the-types/2572
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |