【问题标题】:If Statements in LuaLua 中的 If 语句
【发布时间】:2022-01-25 11:46:44
【问题描述】:

在我遇到的所有其他编程语言中,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-statement lua roblox


    【解决方案1】:
    if h == nil (null)
    

    因此,如果它在触及脚本父级的对象中找不到人形,它将为 false(null),否则为 true(非 null)。

    所以 if [ObjectName] then 等于if [ObjectName] != null then
    *仅对对象有效(非原始值)

    就像在脚本语言中一样。

    【讨论】:

    • 澄清一下,你的意思是说 h 将根据是否找到人形机器人来分配真/假吗?如果是这种情况,在第 4 行中,如何将布尔值的运行状况设置为 0?
    • 抱歉,强制转换不是正确的词,它基本上是一个快捷方式:if [ObjectName] then 等于 if [ObjectName] != null then。仅适用于对象,对于布尔值,它检查值和我不太确定的数字
    【解决方案2】:

    对于如何在 if 语句中解释值,大多数语言都有自己的规则。

    在 Lua 中,falsenil 被视为 false。所有其他值都被视为 true。

    【讨论】:

      【解决方案3】:
      if h then end
      

      基本上等价于

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

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

      if h then end 通常用于检查h 是否不为零。因此,如果代码依赖于 h 是否已被定义,您可以将其置于类似的条件中。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-29
        • 1970-01-01
        • 2010-10-02
        • 2013-04-09
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        • 1970-01-01
        相关资源
        最近更新 更多