Lua 中的 If 语句
If Statements in Lua
在我遇到的所有其他编程语言中,if 语句总是需要一个布尔值才能工作,但是在 Lua 中,以下代码不包含任何错误。如果不能同时做出真假陈述,那么在这个 if 语句中要检查什么?你怎么能只检查“如果(变量)那么”?我是编程新手,目前正在使用 Roblox Studio,非常感谢任何帮助。
function onTouched(Obj)
local h = Obj.Parent:FindFirstChild("Humanoid")
if h then
h.Health = 0
end
end
script.Parent.Touched:Connect(onTouched)
if h == nil (null)
因此,如果在接触脚本父级的对象中找不到人形生物,它将为假(空),否则为真(非空)。
所以
if [ObjectName] then
等于 if [ObjectName] != null then
*仅对对象有效(非原始值)
在脚本语言中就是这样。
对于如何在 if
语句中解释值,大多数语言都有自己的规则。
在Lua中,false
和nil
被视为false。所有其他值都被视为 true。
if h then end
基本等同于
if h ~= nil and h ~= false then end
在 Lua 中,所有不是 nil
或 false
的值在逻辑上都被认为是 true
.
if h then end
通常用于检查 h
是否为 nil。因此,如果代码取决于是否已定义 h
,则将其置于这样的条件下。
在您的示例中,h
正在被索引。不允许索引 nil 值。所以在你索引它之前你应该确保它不是零以避免错误。
检查 return 函数值是一种很好的做法。
在我遇到的所有其他编程语言中,if 语句总是需要一个布尔值才能工作,但是在 Lua 中,以下代码不包含任何错误。如果不能同时做出真假陈述,那么在这个 if 语句中要检查什么?你怎么能只检查“如果(变量)那么”?我是编程新手,目前正在使用 Roblox Studio,非常感谢任何帮助。
function onTouched(Obj)
local h = Obj.Parent:FindFirstChild("Humanoid")
if h then
h.Health = 0
end
end
script.Parent.Touched:Connect(onTouched)
if h == nil (null)
因此,如果在接触脚本父级的对象中找不到人形生物,它将为假(空),否则为真(非空)。
所以
if [ObjectName] then
等于 if [ObjectName] != null then
*仅对对象有效(非原始值)
在脚本语言中就是这样。
对于如何在 if
语句中解释值,大多数语言都有自己的规则。
在Lua中,false
和nil
被视为false。所有其他值都被视为 true。
if h then end
基本等同于
if h ~= nil and h ~= false then end
在 Lua 中,所有不是 nil
或 false
的值在逻辑上都被认为是 true
.
if h then end
通常用于检查 h
是否为 nil。因此,如果代码取决于是否已定义 h
,则将其置于这样的条件下。
在您的示例中,h
正在被索引。不允许索引 nil 值。所以在你索引它之前你应该确保它不是零以避免错误。
检查 return 函数值是一种很好的做法。