1

少し古い本から Lua を学んでいます。Web を検索してみましたが#、検索で記号を使用しているため、非常に紛らわしい結果が得られます。

upvalue を使用するには、%記号を使用する必要があると書かれています。

しかし、コードにそれを書くと、エラーが発生します。

Account.new = function (starting_balance)
  local self = {}
  local balance = starting_balance

  self.withdraw = function (v)
    %balance = %balance - v;
  end
  return self
end

エラーは:unexpected symbol near '%'

Lua 5.x で上位値を処理する新しい方法はありますか?

4

3 に答える 3

8

Lua 5.0 以降、「upvalue 記号」などはなくなりました。upvalue は、関数が宣言されている環境に対してローカルであるため、他のローカル変数と同じように簡単にアクセスできます。

あなたの場合: のbalance代わりに使用してください%balance

Lua 5.1 から、%モジュロ演算子として使用されます。

良い本ですが、少し古くなっている本として、オンラインで入手できるProgramming in Luaと、もちろんリファレンス マニュアルがあります。

于 2012-09-29T15:39:03.363 に答える
3

とても古い本に違いない!as upvalue表記は%、Lua5.0で削除されました。(2003年リリース)

5.0以降、Luaには字句スコープがあります。つまり、アップバリューは自動的に行われます。

do
    local balance = 0
    function deposit ( v )
        balance = balance + v
        return balance
    end
end
print ( deposit ( 5 ) )

出力:

5
于 2012-09-30T04:19:02.930 に答える
0

私は閉鎖に行きます http://www.lua.org/pil/6.1.html#closures

于 2012-09-29T15:42:50.897 に答える