下划线在变量名和逗号后面有什么用处?

我找到了这段 Lua 代码:

function displayName(name)
  name, _ = name:gsub("{", "\\{")
  return name
end

还有这段代码:

function parsePath(path)
  if type(path) == "string" then path, _ = path:gsub("\\", "/") end
  return path
end

我理解代码是做什么的,但我不理解的是,为什么在变量名和赋值部分之间会有一个逗号和下划线 (, _ )。那么这个 name, _ = name:gsub("{", "\\{") 和这个 ..then path, _ = path:gsub("\\", "/") 是什么意思?

有没有人可以解释一下这个东西的含义?

难道 name = name:gsub(....)..then path = path:gsub(...) 不一样吗?

那么为什么要这样写脚本呢?

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

点赞
stackoverflow用户6719765
stackoverflow用户6719765

我不是 Lua 专家,但是这种模式也用于其他编程语言,比如 Python。下划线代表 "一个不会被使用的变量"。如果你的函数返回一个包含两个元素的数组,那么你需要这样做,否则你将得到整个数组。

2021-05-11 14:13:25
stackoverflow用户2858170
stackoverflow用户2858170

在许多编程语言中,_ 用于表示未使用的变量。

这也适用于 Lua。这是一种纯样式约定。在 Lua 手册中找不到任何关于它的内容。

Lua 最常见的静态代码分析器 luacheck 会在你的代码中有未使用的变量时发出警告。它将在这方面忽略命名为 _ 的变量。

name = name:gsub(....) or ..then path = path:gsub(...) 是否相同?

在你的示例中,这实际上是不必要的。

name, _ = name:gsub("{", "\\{") 中有 _ 的唯一原因是为了提示该函数实际上返回两个值。通常你会省略 _

_, numReplaced = name:gsub("{", "\\{") 如果你只关心第二个返回值,它就有意义了。你不能在没有添加第一个未使用的变量的情况下获取它。

2021-05-11 15:01:45