2013-07-31 2 views
25

Ho visto il carattere hash '#' essere aggiunto alla parte anteriore delle variabili molto in Lua.Cosa significa # in Lua?

Cosa fa?

ESEMPIO

-- 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 

Mi scuso se questo è già stato chiesto, ho cercato in giro su internet un sacco ma non ho sembrano aver trovato una risposta. Grazie in anticipo!

risposta

39

Questa è la length operator:

L'operatore lunghezza è segnato con il unario operatore #. La lunghezza di una stringa è il numero di byte (cioè il significato usuale della lunghezza della stringa quando ogni carattere è un byte).

La lunghezza di una tabella t è definita come qualsiasi indice intero n tale che t [n] non è nil e t [n + 1] è nulla; inoltre, se t [1] è nullo, n può essere zero. Per un array regolare, con valori non nulli da 1 a un dato n, la sua lunghezza è esattamente n, l'indice del suo ultimo valore. Se la matrice ha "buchi" (ovvero valori nulli tra altri valori non nulli), allora #t può essere uno qualsiasi degli indici che precedono direttamente un valore nullo (cioè, può considerare qualsiasi valore nullo come la fine dell'array).

+2

Grazie per la tua risposta chiara! Molto apprezzato^_ ^ – Bicentric