2014-12-09 122 views
2

請問這是什麼意思?我知道基本的變量聲明和分配,但這是令人困惑的。這是什麼這在Lua中意味着什麼? 「var = var or」

var = var or { 
     "one", 
     "two", 
     "three", 
    } 

var = { "one", 
     "two", 
     "three", 
    } 

我趕緊檢查手冊,找不到解釋之間的差異。

回答

6

or不返回布爾值;相反,如果它們中沒有一個是真的,它將返回第一個真值或最後一個假值。

例如:

print(nil or 123) -- 123 
print(123 or nil) -- 123 
print(456 or 123) -- 456 
print(nil or false or "hi") -- hi 

您發現該生產線是一個變量設置爲默認值,如果它是nilfalse,但保持它的價值,如果它是其他任何產品的習慣使用這個屬性。示例

function foo(arg) 
    arg = arg or "hello world!" 
    print(arg) 
end 

foo() -- "hello world!" 
foo("goodbye world!") -- "goodbye world!" 

and也類似地工作;它會返回第一個錯誤值或最後一個錯誤值。通過一起使用二者,您也可以模擬三元運算符:

function foo(bool) 
    print(bool and "yes" or "no") -- second value (the true value) must be truthy 
end 
print(foo(true)) -- "yes" 
print(foo(false)) -- "no" 
print(foo(123)) -- "yes" 
+0

謝謝!現在我懂了。 – Strogg 2014-12-09 13:50:02