ranges.rb

    你也可以使用三个点而不是两个点指定范围:这将创建一个不包含终止值范围:

    1. e = ('a'...'z') # this three-dot range = 'a'..'y'

    你可以使用 to_a 方法创建一个由范围定义的数的数组:

    1. (1..10).to_a

    请注意,由于两个浮点数之间的数不是有限的,所以 to_a 方法并没有为浮点数所定义。

    str_range.rb

    你甚至可以创建字符串范围,你需要非常的小心,这样做的话最终可能会超出你的预想。例如,看看你是否知道这个范围指定的值:

    1. str_range = ('abc'..'def')

    你可以使用范围从起始值迭代到终止值。例如,以下是将数字从1到10打印出来的方法:

    for_to.rb

    虽然你可以在单双引号之间写跨行的长字符串,但许多 Ruby 程序员更喜欢使用名为”heredoc”这种替代类型的字符串。hererdoc 是一个以特定结束标记开始的文本块,这可以是你自己选择的结束标记。这里,我选择了 EODOC 作为结束标记:

    heredoc.rb
    1. hdoc1 = <<EODOC

    这告诉 Ruby,直到遇到结束标记时所有行都是单个字符串。这个字符串被赋值给 hdoc1 变量。这是一个完整的例子:

    1. I wandered lonely as a #{"cloud".upcase},
    2. That floats on high o'er vale and hill...

    默认情况下,heredocs 被视为双引号字符串,所以表达式 #{"cloud".upcase} 将会被执行。如果你想要一个 heredoc 被视为单引号字符串,在单引号之间指定结束标记:

    1. hdoc2 = <<'EODOC'
    2. I wandered lonely as a #{"cloud".upcase},
    3. That floats on high o'er vale and hill...
    4. EODOC

    你可以自己选择适当的结束标记,使用保留字也是可以的(但这似乎不是明智的做法!)。

    1. hdoc4 = <<def
    2. I wandered lonely as a #{"cloud".upcase},

    一个被赋值为 heredoc 的变量也可以像其它字符串变量一样使用:

    1. puts(hdoc1)

    如本章前面所述,你可以选择使用 %q// 来分割单引号字符串,以及使用 %Q// 来分割双引号字符串。

    Ruby 提供了类似的方法来定义反引号字符串、正则表达式(regular expressions)、符号(symbols)和数组(arrays)的分隔符。以这种方式定义字符串数组特别的有用,这样避免了为每个元素都要输入字符串分隔符。这里是一些字符串字面量分隔符的参考:

    1. %q/ /
    2. %Q/ /
    3. %/ /
    4. %w/ /
    5. %W/ /
    6. %r| |
    7. %s/ /
    literals.rb