变量名和逗号后的下划线有什么用?
What is the purpose of the underscore after variable name and comma?
我找到了这个 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(...)
不一样吗?
那么为什么脚本要这样写呢?
我不是 Lua 方面的专家,但这种模式在 Python 等其他编程语言中也有使用。下划线的意思是“一个不会被使用的变量”。如果你的函数 returns 是一个有两个元素的数组,那么你需要这样做,否则你将得到整个数组。
在许多编程语言中,_
用于表示未使用的变量。
这也适用于Lua。这是纯粹的风格惯例。你不会在 Lua 手册中找到任何关于它的信息。
luackeck,Lua 最常见的静态代码分析器会在代码中包含未使用的变量时向您发出警告。在这方面,它将忽略名为 _
的变量。
Wouldn't be name = name:gsub(....) or ..then path = path:gsub(...) the
same ?
在你的例子中,这实际上是没有必要的。
在 name, _ = name:gsub("{", "\{")
中包含 _
的唯一原因是暗示此函数实际上 return 有两个值。通常你会离开 _
。
而如果您只对第二个 return 值感兴趣,_, numReplaced = name:gsub("{", "\{")
会有意义。如果不添加第一个未使用的变量,您将无法获得它。
我找到了这个 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(...)
不一样吗?
那么为什么脚本要这样写呢?
我不是 Lua 方面的专家,但这种模式在 Python 等其他编程语言中也有使用。下划线的意思是“一个不会被使用的变量”。如果你的函数 returns 是一个有两个元素的数组,那么你需要这样做,否则你将得到整个数组。
在许多编程语言中,_
用于表示未使用的变量。
这也适用于Lua。这是纯粹的风格惯例。你不会在 Lua 手册中找到任何关于它的信息。
luackeck,Lua 最常见的静态代码分析器会在代码中包含未使用的变量时向您发出警告。在这方面,它将忽略名为 _
的变量。
Wouldn't be name = name:gsub(....) or ..then path = path:gsub(...) the same ?
在你的例子中,这实际上是没有必要的。
在 name, _ = name:gsub("{", "\{")
中包含 _
的唯一原因是暗示此函数实际上 return 有两个值。通常你会离开 _
。
而如果您只对第二个 return 值感兴趣,_, numReplaced = name:gsub("{", "\{")
会有意义。如果不添加第一个未使用的变量,您将无法获得它。