天道酬勤,学无止境

eta-expansion

Scala中的eta扩展是多少?(What is the eta expansion in Scala?)

问题 我是Scala的新手。 我刚刚听到了“ eta扩展”一词,并且大致知道这意味着将方法扩展为功能对象。 但是我发现SO中几乎没有资源可以系统地介绍它。 我对eta扩展在Scala中的工作方式感到好奇。 eta扩展需要哪些方案? 以及如何在Scala中实现eta扩展? 我大致知道在这种情况下: def someMethod(x: Int): Int = x * x someMethod _将大致转换为新的函数对象,如下所示: new Function1[Int, Int] { def apply(x: Int): Int = x * x } 这是Scala的全部功能吗? 回答1 该定义和一些示例在http://scala-lang.org/files/archive/spec/2.11/06-expressions.html#method-values中给出。 someMethod _将大致转换为新的函数对象,如下所示: 不完全是:实际上 new Function1[Int, Int] { def apply(x: Int): Int = someMethod(x) } 区别很重要,例如someMethod是否在某处被覆盖。 这是Scala的全部功能吗? 您还需要考虑如果该方法接受多个参数列表(获得返回函数的函数)或按名称命名的参数会发生什么情况。 eta扩展需要哪些方案?

2021-03-30 13:02:36    分类:技术分享    scala   eta-expansion

What is the eta expansion in Scala?

I am new to Scala. I just heard the term "eta expansion" and roughly know that it means to expand a method to a function object. But I find few resources in SO that systematically introduce it. I am curious about how eta expansion works in Scala. What are the scenarios that eta expansion are needed? And how eta expansion is implemented in Scala? I roughly know that in cases like this: def someMethod(x: Int): Int = x * x someMethod _ will roughly be translated to a new function object like this: new Function1[Int, Int] { def apply(x: Int): Int = x * x } Is it all that Scala does?

2021-03-22 16:18:47    分类:问答    scala   eta-expansion