对于下面的Lua代码:
local function foo(x, y, z)
local x = x or true
local y = y or 1234
z = z or "default"
end
我一直认为这三行内容的含义是:
如果x / y / z为nil,则x / y / z设置为true / 1234 /"默认为"。否则,它仍然是它。因此,我在很多地方都有这样的一行来设置一个参数为某个默认值,以防它可能作为nil传递给函数。
然而,在我的实验中似乎并不完全正确。我不知道在哪里学习了这个Lua编码概念。如何正确地做到这一点?
答案 0 :(得分:3)
只要您的布尔(?)变量x
未初始化为false
,该方法就会起作用。如果您只想对nil
值使用默认值,则a or b
方法是正确的。
如果您的变量可以是false
,则必须使用严格的if-then块:
if x == nil then x = true end
您可以在lua wiki上看到更多关于三元运算符的方法/示例。
答案 1 :(得分:1)
如果您希望能够将nil
作为参数传递,则存在一种更严格的方法(例如,您要区分foo(1,2,nil)
和foo(1,2)
)
function foo(...)
local n,x,y,z = select('#', ...), ...
if n < 3 then z = default end
if n < 2 then y = default end
if n < 1 then x = default end
-- here x,y or z can be nil
...
end
但是你必须要知道自己在做什么,因为这可能不是你职能用户的预期行为。
答案 2 :(得分:0)
这应该可以正常工作:
src
|- .. //other stuff
|- app
|-app.component.html
|-app.component.scss
|-app.component.ts
|-app-routing.module.ts
|-app.module.ts
|-blogs
|-blogs.component.html
|-blogs.component.scss
|-blogs.component.ts