If statement 在Lua中,只有一个参数的if语句意味着什么?
我学过用Java编程。Lua对我来说是个新手,我试着做我的家庭作业,但不确定以下性质的if语句意味着什么 代码如下:If statement 在Lua中,只有一个参数的if语句意味着什么?,if-statement,lua,arguments,If Statement,Lua,Arguments,我学过用Java编程。Lua对我来说是个新手,我试着做我的家庭作业,但不确定以下性质的if语句意味着什么 代码如下: local function getMinHeight(self) local minHeight = 0 for i=1, minimizedLines do local line = select(9+i, self:GetRegions()) **if(line) then minHeight = mi
local function getMinHeight(self)
local minHeight = 0
for i=1, minimizedLines do
local line = select(9+i, self:GetRegions())
**if(line) then
minHeight = minHeight + line:GetHeight() + 2.5
end**
end
if(minHeight == 0) then
minHeight = select(2, self:GetFont()) + 2.5
end
return minHeight
end
if语句前后带有**是我不确定的部分。我不知道if语句在检查什么。如果该行不是零?如果线路存在?如果什么?在Lua中,任何不是
nil
或false
的内容在条件语句中计算为true
如果该行不是零?如果线路存在
两个都是,因为它们的意思是一样的
select
函数从其参数列表中返回特定参数。它主要用于…
,但在本例中,它用于选择由self:GetRegions
返回的第(i+9)个值。如果没有这样的值(例如,如果GetRegions只返回5个值),则select
返回nil
如果(行)
正在检查是否从选择
返回值
if(line)
被用作if(line~=nil)
的快捷方式,因为nil在条件语句中的计算结果为false
值得指出的是,这种捷径并不总是合适的。例如,我们可以迭代表中的所有值,如下所示:
key, val = next(lookup)
while key do
print(key, val)
key, val = next(lookup, key)
end
bool found = false
...
if(found) {
...
}
但是,如果表的某个键为false
,则此操作将失败:
lookup = {
["fred"] = "Fred Flinstone",
[true] = "True",
[false] = "False",
}
因此,我们必须明确检查nil
:
key, val = next(lookup)
while key ~= nil do
print(key, val)
key, val = next(lookup, key)
end
在Lua中,任何不是
nil
或false
的内容在条件语句中计算为true
如果该行不是零?如果线路存在
两个都是,因为它们的意思是一样的
select
函数从其参数列表中返回特定参数。它主要用于…
,但在本例中,它用于选择由self:GetRegions
返回的第(i+9)个值。如果没有这样的值(例如,如果GetRegions只返回5个值),则select
返回nil
如果(行)
正在检查是否从选择
返回值
if(line)
被用作if(line~=nil)
的快捷方式,因为nil在条件语句中的计算结果为false
值得指出的是,这种捷径并不总是合适的。例如,我们可以迭代表中的所有值,如下所示:
key, val = next(lookup)
while key do
print(key, val)
key, val = next(lookup, key)
end
bool found = false
...
if(found) {
...
}
但是,如果表的某个键为false
,则此操作将失败:
lookup = {
["fred"] = "Fred Flinstone",
[true] = "True",
[false] = "False",
}
因此,我们必须明确检查nil
:
key, val = next(lookup)
while key ~= nil do
print(key, val)
key, val = next(lookup, key)
end
正如Mud所说,在lua中,除了
nil
和false
之外的任何东西都被认为是真实的。因此,只要行
不是nil
或false
,上面的if将通过
也就是说,你的措辞让我有点担心——“只有一个论点的假设”
首先,它不叫“参数”——它叫表达式。在大多数语言中都是这样。例如,在java中,您可以执行以下操作:
key, val = next(lookup)
while key do
print(key, val)
key, val = next(lookup, key)
end
bool found = false
...
if(found) {
...
}
if
s只关心表达式的最终值;他们不在乎它是单个变量还是更复杂的结构。正如Mud所说,在lua中,除了nil
和false
之外的任何东西都被认为是真实的。因此,只要行
不是nil
或false
,上面的if将通过
也就是说,你的措辞让我有点担心——“只有一个论点的假设”
首先,它不叫“参数”——它叫表达式。在大多数语言中都是这样。例如,在java中,您可以执行以下操作:
key, val = next(lookup)
while key do
print(key, val)
key, val = next(lookup, key)
end
bool found = false
...
if(found) {
...
}
if
s只关心表达式的最终值;他们不在乎它是单个变量还是更复杂的结构。明白了,谢谢你的澄清。将来我的术语会更准确。感谢您的解释:DGotcha,感谢您的澄清。将来我的术语会更准确。谢谢你的解释:谢谢你的解释。我很感激。回答得很好,非常感谢!再次抱歉,我说的是论点而不是表达:谢谢你的解释。我很感激。回答得很好,非常感谢!再次抱歉,我说的是参数而不是表达式:D