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中,falsenil被视为false。所有其他值都被视为 true。

if h then end

基本等同于

if h ~= nil and h ~= false then end

在 Lua 中,所有不是 nilfalse 的值在逻辑上都被认为是 true.

if h then end 通常用于检查 h 是否为 nil。因此,如果代码取决于是否已定义 h,则将其置于这样的条件下。

在您的示例中,h 正在被索引。不允许索引 nil 值。所以在你索引它之前你应该确保它不是零以避免错误。

检查 return 函数值是一种很好的做法。