你也可以使用三个点而不是两个点指定范围:这将创建一个不包含终止值范围:
e = ('a'...'z') # this three-dot range = 'a'..'y'
你可以使用 to_a
方法创建一个由范围定义的数的数组:
(1..10).to_a
请注意,由于两个浮点数之间的数不是有限的,所以 to_a
方法并没有为浮点数所定义。
你甚至可以创建字符串范围,你需要非常的小心,这样做的话最终可能会超出你的预想。例如,看看你是否知道这个范围指定的值:
str_range = ('abc'..'def')
你可以使用范围从起始值迭代到终止值。例如,以下是将数字从1到10打印出来的方法:
虽然你可以在单双引号之间写跨行的长字符串,但许多 Ruby 程序员更喜欢使用名为”heredoc”这种替代类型的字符串。hererdoc 是一个以特定结束标记开始的文本块,这可以是你自己选择的结束标记。这里,我选择了 EODOC 作为结束标记:
hdoc1 = <<EODOC
这告诉 Ruby,直到遇到结束标记时所有行都是单个字符串。这个字符串被赋值给 hdoc1
变量。这是一个完整的例子:
I wandered lonely as a #{"cloud".upcase},
That floats on high o'er vale and hill...
默认情况下,heredocs 被视为双引号字符串,所以表达式 #{"cloud".upcase}
将会被执行。如果你想要一个 heredoc 被视为单引号字符串,在单引号之间指定结束标记:
hdoc2 = <<'EODOC'
I wandered lonely as a #{"cloud".upcase},
That floats on high o'er vale and hill...
EODOC
你可以自己选择适当的结束标记,使用保留字也是可以的(但这似乎不是明智的做法!)。
hdoc4 = <<def
I wandered lonely as a #{"cloud".upcase},
一个被赋值为 heredoc 的变量也可以像其它字符串变量一样使用:
puts(hdoc1)
如本章前面所述,你可以选择使用 %q/ 和 / 来分割单引号字符串,以及使用 %Q/ 和 / 来分割双引号字符串。
Ruby 提供了类似的方法来定义反引号字符串、正则表达式(regular expressions)、符号(symbols)和数组(arrays)的分隔符。以这种方式定义字符串数组特别的有用,这样避免了为每个元素都要输入字符串分隔符。这里是一些字符串字面量分隔符的参考:
%q/ /
%Q/ /
%/ /
%w/ /
%W/ /
%r| |
%s/ /