【问题标题】:Why does _VERSION return "Luau" instead of "Lua 5.1" and why does += operator suddenly work?为什么 _VERSION 返回“Luau”而不是“Lua 5.1”,为什么 += 运算符突然起作用?
【发布时间】:2020-12-14 15:36:34
【问题描述】:

我发现 _VERSION 返回 "Luau" 而不是 "Lua 5.1"。我还发现 continue+= 运营商工作

print(_VERSION) -- Luau
value = 0
value += 1
print(value) -- Doesn't return a syntax error
for k, v in ipairs({1, 2, 3, 4}) do
  if k == 1 then
    continue -- This works?
  end
  print(v)
end

打印

1
2
3
4

我也弄乱了它并实现了类型注释。

function foo(x: number, y: string): boolean
    local k: string = y:rep(x)
    return k == "a"
end

不会引发语法错误。 我还发现 table.findtable.createmath.clamp 在 Lua 5.4 以及 typeof 函数中被删除了

我还实现了二进制文字 print(0b10) 在 Lua 5.1 中返回 2 但在 Lua 5.4 中引发错误,以及 print(1_000) 在 Lua 5.1 中返回 1000,但在 Lua 5.4 中不起作用

为什么这些突然在 Lua 5.1 上工作了?没想到它可以工作 Lua 5.1 当我切换到 Lua 5.4 时,_VERSION 返回 "Lua 5.4"continue 不起作用并且 typeof 被删除(如何检查 Lua 5.4 中的类型?)。 这是怎么回事? 以及为什么 Lua 5.4 删除了 += 、 continue 运算符以及为什么 _VERSION 在 Lua 5.1 中返回 Luau?

【问题讨论】:

  • 你尝试这些东西的背景是什么? (其中许多东西从来都不是 Lua 的一部分,只是 Luau 的功能。)

标签: lua


【解决方案1】:

简单:它不是 Lua 5.1。

它是Luau,一种源自 Lua 5.1 并向后兼容的语言。这就是为什么你通常的 5.1 代码可以工作以及为什么你可以使用其他时髦的东西。它目前是封闭源代码,由 Roblox 开发。

至于 Lua 5.4,请参阅它的 Reference Manual 以了解它的期望。

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2013-12-04
    • 2015-07-06
    相关资源
    最近更新 更多