我正在学习Scala Coursera课程,讲座似乎缺少对多个参数列表如何工作的解释。
他声称像下面的averageDamp()函数可以只用第一个参数(f)调用,允许你稍后调用它。看来你需要通过跟随" _"来显式地进行部分绑定。
但是,如果将部分绑定调用传递给另一个函数,该函数接受具有与部分绑定函数匹配的签名的函数,则它将隐式接受它,no" _"必要的。
然而他根本没有使用术语部分绑定,只是说Scala中有一个特殊的语法基本上返回一个闭包,而实际上它只是部分绑定。或者不是?
scala> def averageDamp(f: Double => Double)(x: Double) = (x+f(x))/2
scala> def fixedPoint(f: Double => Double)(x: Int) = f(x)+1
scala> fixedPoint(averageDamp(x=>x+1))(2)
res29: Double = 3.5
scala> averageDamp(x=>x+1)
<console>:19: error: missing arguments for method averageDamp;
follow this method with `_' if you want to treat it as a partially applied function
averageDamp(x=>x+1)
averageDamp的非部分绑定版本可能类似于:
def averageDamp(f: Double => Double): (Double => Double) =
def inner(x: Double): Double =
(x+f(x))/2
inner
我想我的问题是...是averageDamp()的多参数列表版本被传递到另一个函数只是隐式部分绑定...或者这是一种特殊的Scala语法用于返回内部函数/闭合?
答案 0 :(得分:0)
然而他根本没有使用术语部分绑定,只是说Scala中有一个特殊的语法基本上返回一个闭包,实际上它只是部分绑定...是多参数列表averageDamp()的版本被传递到另一个函数只是隐式的部分绑定...或者这是否真的是某种特殊的Scala语法用于返回内部函数/闭包?
为什么你认为它是一个或另一个?仅提供一些参数列表是具有多个参数列表的方法的部分应用程序(通常不是#34;绑定&#34;)的特殊语法。