Lua -高阶导数函数



返回函数如何在Lua中工作?我试着理解这个导数函数,但是我很难理解。

function derivative(f, delta)
  delta = delta or 1e-4
  return function(x)
      return (f(x + delta) - f(x))/delta
    end
end

先看这里

简单地说,函数是一等公民,您可以将它们存储在变量中并从函数返回。

。在您的示例中,要创建一个闭包。它将具有f和delta的上值,可用于内部函数。

所以当你调用你的导数函数时,新的闭包将被创建为f和的副本。以后你可以像调用其他函数一样调用它

local d = derivative(f, 1e-6)
d(10)

EDIT: "回答上,但我有困难理解如何在匿名函数中处理x参数在我的例子"

每个函数都有一个签名,有几个形式属性,就会得到。在Lua中,你可以调用带有任意数量参数的函数。让我们考虑一个例子:

local a = function(x1, x2) print(x1, x2) end
a(1) // 1, nil
a(1, 2) // 1, 2
a(1, 2, 3) // 1, 2

当你调用变量a中的函数时,每个给定的参数值,将逐个与函数argumentList匹配。在第三个例子中,1将被分配给x1, 2分配给x2, 3将被丢弃。在变量函数smth的term中,像这样执行

function a(...)
  local x1 = (...)[1]
  local x2 = (...)[2]
  // Body
end

在您的示例中,x被视为内部函数参数,将在其内部可见,并在调用内部函数实例时初始化。

fdelta对于每个函数实例都是唯一的,正如我上面提到的。

希望我笨拙的解释能达到他们的目的,并对你有所帮助。

最新更新