Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 变量名和逗号后下划线的用途是什么?_Variables_Lua - Fatal编程技术网

Variables 变量名和逗号后下划线的用途是什么?

Variables 变量名和逗号后下划线的用途是什么?,variables,lua,Variables,Lua,我发现这个Lua代码: function displayName(name) name, _ = name:gsub("{", "\\{") return name end 再说一遍: function parsePath(path) if type(path) == "string" then path, _ = path:gsub("\\", "/") end return

我发现这个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(“{”,“\\{”)
和这一个
。然后路径,\=path:gsub(“\\”,“/”)

有人能给我解释一下那件事的意思吗

不会是
name=name:gsub(…)
。那么path=path:gsub(…)
相同吗


那么为什么脚本是这样写的呢?

我不是Lua方面的专家,但这种模式在其他编程语言(如Python)中也有使用。下划线表示“不使用的变量”。如果函数返回一个包含两个元素的数组,则需要执行此操作,否则将得到整个数组。

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

这也适用于Lua。这是纯粹的风格惯例。你在Lua手册中找不到任何关于它的内容

luackeck是最常见的Lua静态代码分析器,它会为代码中存在未使用的变量提供警告。在这方面,它会忽略名为
\uuuu
的变量

不会是name=name:gsub(…)或..然后path=path:gsub(…) 同样的

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

name,\=name:gsub(“{”,“\\{”)
中使用
的唯一原因是提示此函数实际返回两个值。通常您会将
保留


鉴于
,numReplaced=name:gsub(“{”,“\\{”)
如果您只对第二个返回值感兴趣,那么它是有意义的。如果不添加第一个未使用的变量,您就无法得到它。

以这种方式使用下划线来表示必须定义的未使用的变量,这在许多编程语言中是很常见的。我了解了它。例如,在当索引的值不相关时进行for循环。让我困惑的是,在我发布的代码中使用它似乎没有任何意义,因为它只得到与实际变量相同的值,返回的变量。感谢您的回复和解释。那么您确认在代码的这两部分中逗号/下划线的含义吗ingless和can Remove?(嗯…可能最初函数是不同的,返回了更多的值..这是一个遗留问题)除非您想提示
string.gsub
acutally有两个返回值,您只使用第一个,在这里使用下划线是没有意义的。从Lua手册:赋值前,将值列表调整为变量列表的长度。如果值超过所需值,多余的值将被丢弃。“因此,如果只提供一个变量,函数返回的列表将调整为1个元素。再次感谢。现在我了解了这部分代码的含义。由于string.gsub返回2个值(我们只对第一个值感兴趣),两种语法的工作原理相同。其中一种更简单、更清晰(没有逗号下划线),另一个更精确,并给出关于调用字符串函数如何工作的提示。理想情况下,您知道该函数的功能,如果不知道,请检查引用并找出答案。我个人更喜欢只在必要时使用u。我完全同意您的看法:我也更喜欢更干净、可读性更强的代码。