需要从coursera的scala固定点进行解释
我正在看coursera教的Scala函数编程的视频。我偶然发现了这些代码需要从coursera的scala固定点进行解释,scala,functional-programming,square-root,coursera-api,Scala,Functional Programming,Square Root,Coursera Api,我正在看coursera教的Scala函数编程的视频。我偶然发现了这些代码 def averageDamp(f: Double => Double)(x: Double) = (x + f(x)) / 2 以及作为 def sqrt(x: Double): Double = fixedPoint(averageDamp(y => y / x))(1) 但是不能在表单中使用它 averageDamp(x => x) 它说这个论点是不存在的。上述案例中的论点也不存在。
def averageDamp(f: Double => Double)(x: Double) = (x + f(x)) / 2
以及作为
def sqrt(x: Double): Double = fixedPoint(averageDamp(y => y / x))(1)
但是不能在表单中使用它
averageDamp(x => x)
它说这个论点是不存在的。上述案例中的论点也不存在。谁来帮忙。提前感谢:)这篇文章的关键词是
currying
。当按上述定义averageDamp
时,averageDamp
将需要两个参数。当您仅使用第一个参数编写它时,它将返回一个函数(闭包),该函数接受另一个参数。这就是为什么当你像averageDamp(x=>x)
那样调用它时,它会说参数丢失了。您只需调用一个不带参数的函数,而该函数需要一个参数。要实际计算该值,您应该像averageDamp(some_函数)(double_值)
那样调用它
签出此项:此项的关键字是currying
。当按上述定义averageDamp
时,averageDamp
将需要两个参数。当您仅使用第一个参数编写它时,它将返回一个函数(闭包),该函数接受另一个参数。这就是为什么当你像averageDamp(x=>x)
那样调用它时,它会说参数丢失了。您只需调用一个不带参数的函数,而该函数需要一个参数。要实际计算该值,您应该像averageDamp(some_函数)(double_值)
那样调用它
检查此项:多参数列表方法的部分应用只能(a)显式(如averageDamp(x=>x)
)或(b)在函数上下文中隐式(如val f:Double=>Double=averageDamp(x=>x)
)。我猜想,fixedPoint
需要Double=>Double
,因此我们有选项(b)多参数列表方法的部分应用只能(a)显式(如averageDamp(x=>x)
)或(b)在函数上下文中隐式(如valf:Double=>Double=averageDamp(x=>x)
)。我猜,fixedPoint
需要Double=>Double
,所以我们有选项(b),当您使用第一个参数调用它时,它将返回一个函数(闭包)
这部分是错误的。您不能仅使用第一个参数(这里技术上是第一个参数列表)调用它,除非您处于函数上下文中,Scala知道您需要一个函数,并且缺少的是一个完整的参数列表。您正确的调用在这里不是正确的动词。我在计算平方根。仍然不能使用as:averageDamp(y=>x/y)(1)当您使用第一个参数调用它时,它将返回一个函数(闭包)
这部分是错误的。您不能仅使用第一个参数(这里技术上是第一个参数列表)调用它,除非您处于函数上下文中,Scala知道您需要一个函数,并且缺少的是一个完整的参数列表。您正确的调用在这里不是正确的动词。我在计算平方根。仍然不能用作:averageDamp(y=>x/y)(1)