%w(don matt james)
Ruby和%w[don matt james]
Ruby之间有区别吗?
使用 Ruby 控制台,它们都输出一个数组,其中每个单词作为一个元素。我很好奇为什么有多种方法可以做到这一点 - 以及每种方式应该如何使用。
%w(don matt james)
Ruby和%w[don matt james]
Ruby之间有区别吗?
使用 Ruby 控制台,它们都输出一个数组,其中每个单词作为一个元素。我很好奇为什么有多种方法可以做到这一点 - 以及每种方式应该如何使用。
没有区别。任何单个非字母数字字符或任何“配对”字符集都可以用作分隔符,如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
任何一个选项都可以,并且产生相同的结果。甚至还有一些额外的语法变化:
%w'don matt james'
%w{don matt james}
对于您的特定示例,输出是相同的,但存在差异。分隔符自由的目的是允许文字内的不同字符而不转义。如果您使用某些字符作为分隔符,那么您不能在不转义的情况下在符号中使用它们。根据您可能拥有的内容,您应该使用不同的分隔符。
["foo()", "bar()"]
%w(foo() bar()) # => error
%w[foo() bar()]
["foo[1]", "bar[5]"]
%w(foo[1] bar[5])
%w[foo[1] bar[5]] # => error