Lua中的If语句

在我所接触到的其他编程语言中,if语句总是需要一个布尔值才能工作,但在Lua中,以下代码没有任何错误。在这个if语句中是检查了什么,如果不能制作真假语句,如何只检查“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)

原文链接 https://stackoverflow.com/questions/70479764

点赞
stackoverflow用户12603668
stackoverflow用户12603668
如果h == nil(空)

因此,如果在脚本所依附的对象中找不到人形,它将为false(空),否则为true(非空)。

所以 if [ObjectName] 就等于 if [ObjectName] != null

\ *仅适用于对象(非原始值)

在脚本语言中是这样的。

2021-12-25 11:42:26
stackoverflow用户3574628
stackoverflow用户3574628

大多数编程语言都有它们自己在 if 语句中如何解释值的规则。

在 Lua 中,falsenil 被视为假。而其他所有值被视为真。

2021-12-25 15:04:08
stackoverflow用户2858170
stackoverflow用户2858170

如果 h then end,基本上等价于 if h ~= nil and h ~= false then end

在 Lua 中,除了 nilfalse,其余所有值都被认为是逻辑上的“true”。

if h then end 通常用于检查 h 是否为 nil。所以,如果代码依赖于 h 是否已定义,则可以将其放在这样的条件中。

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

检查函数的返回值是一个好习惯。

2021-12-25 20:31:37