2013-07-31 38 views
25

Tôi đã thấy ký tự băm '#' được thêm vào trước các biến rất nhiều trong Lua.# có nghĩa là gì trong Lua?

Nó sẽ làm gì?

VÍ DỤ

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

Xin lỗi nếu điều này đã được hỏi, tôi đã tìm kiếm xung quanh trên internet rất nhiều nhưng tôi đã dường như không đã tìm thấy một câu trả lời. Cảm ơn trước!

Trả lời

39

Đó là length operator:

Nhà điều hành thời gian được biểu thị bởi các nhà điều hành unary #. Độ dài của một chuỗi là số byte của nó (nghĩa là, độ dài chuỗi thông thường khi mỗi ký tự là một byte).

Độ dài của bảng t được định nghĩa là bất kỳ chỉ số nguyên n nào mà t [n] không phải là nil và t [n + 1] là 0; hơn nữa, nếu t [1] là nil, n có thể bằng không. Đối với một mảng thông thường, với các giá trị không nil từ 1 đến một n cho trước, chiều dài của nó chính xác là n, chỉ mục của giá trị cuối cùng của nó. Nếu mảng có "lỗ" (có nghĩa là, giá trị nil giữa các giá trị khác không phải là nil), thì #t có thể là bất kỳ chỉ số nào đứng trước giá trị nil (tức là, nó có thể xem xét bất kỳ giá trị nil nào như cuối của mảng).

+2

Cảm ơn bạn đã trả lời rõ ràng! Nhiều đánh giá cao^_ ^ – Bicentric