9

%w(don matt james)Ruby和%w[don matt james]Ruby之间有区别吗?

使用 Ruby 控制台,它们都输出一个数组,其中每个单词作为一个元素。我很好奇为什么有多种方法可以做到这一点 - 以及每种方式应该如何使用。

4

3 回答 3

11

没有区别。任何单个非字母数字字符或任何“配对”字符集都可以用作分隔符,如http://en.wikibooks.org/w/index.php?title=Ruby_Programming/Syntax/Literals中所述(请参阅“% 表示法”)和http://www.ruby-doc.org/core-2.0.0/doc/syntax/literals_rdoc.html#label-Percent+Strings

于 2013-11-03T22:38:07.783 回答
5

任何一个选项都可以,并且产生相同的结果。甚至还有一些额外的语法变化:

%w'don matt james'
%w{don matt james}
于 2013-11-03T22:39:02.763 回答
4

对于您的特定示例,输出是相同的,但存在差异。分隔符自由的目的是允许文字内的不同字符而不转义。如果您使用某些字符作为分隔符,那么您不能在不转义的情况下在符号中使用它们。根据您可能拥有的内容,您应该使用不同的分隔符。

["foo()", "bar()"]
%w(foo() bar()) # => error
%w[foo() bar()]

["foo[1]", "bar[5]"]
%w(foo[1] bar[5])
%w[foo[1] bar[5]] # => error
于 2013-11-04T02:09:26.680 回答