以下两条语句将生成相同的结果:
arr = %w(abc def ghi jkl)
和
arr = ["abc", "def", "ghi", "jkl"]
在哪些情况下应该使用%w
?
在上面的例子中,我需要一个数组["abc", "def", "ghi", "jkl"]
。哪种方式是理想的:前者(使用%w
)还是后者?
发布于 2013-05-10 15:20:21
什么时候使用%w[...]
而不是常规数组?我相信你可以通过看着这两个,然后输入它们,然后思考你刚刚做了什么,就能想出原因。
当您有一个要转换为数组的单个单词列表时,请使用%w[...]
。当我有要循环遍历的参数,或者我知道将来要添加的命令时,我会使用它,因为%w[...]
使向数组添加新元素变得很容易。在阵列的定义中有较少的视觉噪声。
当您的元素中嵌入了会欺骗%w
的空格时,请使用常规字符串数组。对于必须包含非字符串元素的数组,请使用它。用逗号将"
和'
中的元素括起来会产生视觉噪声,但这也使得创建任何对象类型的数组成为可能。
因此,您可以选择何时使用其中之一,当它对您最有意义时。它被称为“程序员的选择”。
发布于 2013-05-10 15:18:56
正如您正确指出的那样,它们会产生相同的结果。所以,在做决定时,选择一个能产生更简单代码的代码。在本例中,它是%w
操作符。在您的previous question中,它是数组文字。
发布于 2013-05-10 15:31:12
使用%w
可以避免在字符串两边使用引号。
此外,还有更多这样的快捷方式:
%W - double quotes
%r - regular expression
%q - single-quoted string
%Q - double-quoted string
%x - shell command
有关更多信息,请参阅"What does %w(array) mean?“
https://stackoverflow.com/questions/16477095
复制相似问题