Ruby数组的单词

时间:2017-03-06 10:04:32

标签: arrays ruby

我只是在处理ruby中的一系列单词,我通常会这样写:

%w(a b c)
#=> ["a", "b", "c"]

我发现了一个帖子,其中我使用%w||而不是%w()看到了作者。然后出于好奇,我试着跟着:

%w|a b c|
#=> ["a", "b", "c"]

%w_a b c_
#=> ["a", "b", "c"]

%w*a b c*
#=> ["a", "b", "c"]

%w-a b c-
#=> ["a", "b", "c"]

%w+a b c+
#=> ["a", "b", "c"]

此外,符号数组也是如此

%i|a b c|
#=> [:a, :b, :c]

%i_a b c_
#=> [:a, :b, :c]

%i*a b c*
#=> [:a, :b, :c]

%i-a b c-
#=> [:a, :b, :c]

%i+a b c+
#=> [:a, :b, :c]

这是故意做的事吗?

这些格式是否存在差异,或者只是为了方便程序员。

2 个答案:

答案 0 :(得分:12)

可以输入:

%w|a) b) c)|
#=> ["a)", "b)", "c)"]

相反:

%w(a) b) c))

是一个SyntaxError:

SyntaxError: unexpected tIDENTIFIER, expecting end-of-input

它也适用于字符串:

%q|"](\/#{t}'?}|
#=> "\"](\\/\#{t}'?}"

答案 1 :(得分:3)

这是由语言设计者有意完成的,因此您可以在数组中使用任意字符串。 语法甚至考虑某些"打开" vs."关闭"符号作为分隔符:

  

如果您使用“(”,“[”,“{”,“<”,则必须将其与“),”,“]”,“}”,“>”分别关闭。您可以将大多数其他非字母数字字符用于百分比字符串分隔符,例如“%”,“|”,“^”等。

您可以在language documentation中了解更多相关信息。