Ruby的字符串文字并置功能在哪里正式记录?

时间:2013-08-12 18:12:31

标签: ruby

我最近意识到,如果你并置了一系列Ruby字符串文字(例如'a' "b" 'c'),它就相当于这些字符串文字的串联。但是,我无法在任何地方找到此语言功能。我使用术语“并置”和“连接”进行了搜索,但只在几个StackOverflow响应中找到了对它的引用。谁能指出我一个明确的参考?

4 个答案:

答案 0 :(得分:10)

更新

这是Ruby附带的RDoc中的now officially documented

下次构建文档时,更改将传播到RubyDoc

添加的文档:

Adjacent string literals are automatically concatenated by the interpreter:

  "con" "cat" "en" "at" "ion" #=> "concatenation"
  "This string contains "\
  "no newlines."              #=> "This string contains no newlines."

Any combination of adjacent single-quote, double-quote, percent strings will
be concatenated as long as a percent-string is not last.

  %q{a} 'b' "c" #=> "abc"
  "a" 'b' %q{c} #=> NameError: uninitialized constant q

ORIGINAL

目前,这不是官方ruby文档中的任何地方,但我认为应该如此。正如评论中所指出的,文档的合理位置是:http://www.ruby-doc.org/core-2.0/doc/syntax/literals_rdoc.html#label-Strings

我已在pull request上打开ruby/ruby并添加了文档。

如果合并此拉取请求,它将自动更新http://www.ruby-doc.org。如果发生这种情况,我会更新这篇文章。 ^ _ ^

我在网上发现的唯一其他提及是:

答案 1 :(得分:3)

The Ruby Programming Language, page 47中有一个引用。

对于您希望在代码中拆分字符串文字但不想支付连接它们的价格(以及创建3个或更多字符串)的情况,它看起来像是故意在解析器中。没有换行符,不需要行长破坏代码的长字符串就是一个很好的例子

text = "This is a long example message without line breaks. " \
    "If it were not for this handy syntax, " \
    "I would need to concatenate many strings, " \
    "or find some other work-around"

答案 2 :(得分:3)

pickaxe reference外,还有一些unit tests

# compile time string concatenation
assert_equal("abcd", "ab" "cd")
assert_equal("22aacd44", "#{22}aa" "cd#{44}")
assert_equal("22aacd445566", "#{22}aa" "cd#{44}" "55" "#{66}")

答案 3 :(得分:0)

如果你想在多行中打破一个长的单引号String-literal而不在其中嵌入新行。

简单地将其分解为多个相邻的字符串文字,ruby解释器将在解析过程中将它们连接起来。

str = "hello" "all"

puts str #=> helloall

请记住,您必须转义文字之间的换行符,以便ruby不会将新行解释为语句终止符。

str = "hello" \
      " all" \
      " how are you."

puts str #=> hello all how are you