我只是在处理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]
这是故意做的事吗?
这些格式是否存在差异,或者只是为了方便程序员。
答案 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中了解更多相关信息。