50

Lua ではハッシュ文字 '#' が変数の先頭に追加されることがよくあります。

それは何をするためのものか?

-- sort AIs in currentlevel
table.sort(level.ais, function(a,b) return a.y < b.y end)
local curAIIndex = 1
local maxAIIndex = #level.ais
for i = 1,#currentLevel+maxAIIndex do
    if level.ais[curAIIndex].y+sprites.monster:getHeight() < currentLevel[i].lowerY then
        table.insert(currentLevel, i, level.ais[curAIIndex])
        curAIIndex = curAIIndex + 1
        if curAIIndex > maxAIIndex then
            break
        end
    end
end

すでに質問されている場合は申し訳ありません。インターネットでいろいろと検索しましたが、答えが見つからないようです。前もって感謝します!

4

3 に答える 3

61

それが長さ演算子です:

長さ演算子は、単項演算子 # で示されます。文字列の長さはそのバイト数です (つまり、各文字が 1 バイトである場合の文字列の長さの通常の意味)。

テーブル t の長さは、t[n] が nil ではなく、t[n+1] が nil となる任意の整数インデックス n として定義されます。さらに、t[1] が nil の場合、n はゼロになる可能性があります。1 から与えられた n までの nil 以外の値を持つ通常の配列の場合、その長さはちょうど n (最後の値のインデックス) です。配列に「穴」(つまり、他の非 nil 値の間にある nil 値) がある場合、 #t は、nil 値の直前の任意のインデックスにすることができます (つまり、そのような nil 値を末尾と見なすことができます)。アレイの)。

于 2013-07-31T15:32:17.643 に答える