在ruby中创建范围,哈希,数组的三种方法

时间:2014-05-04 02:57:15

标签: ruby

我正在做一个关于ruby的教程,它要求3种方法来创建范围,哈希,数组。

我只能想到2:(1..3)Range.new(1,3)(类似于哈希和数组)。

第三种方式是什么?

相关教程是The Odin Project

3 个答案:

答案 0 :(得分:2)

可以使用 s..e s ... e 文字或 :: new 构建范围。

使用..构建的范围包括从开始到结束。 使用...创建的那些排除了最终值。当用作迭代器时,范围将返回序列中的每个值。

(0..2) == (0..2)            #=> true
(0..2) == Range.new(0,2)    #=> true
(0..2) == (0...2)           #=> false

Read More Here

答案 1 :(得分:1)

你也可以使用(1...4)制作一个专属范围,如果变成一个数组就变成[1, 2, 3]

(1..3)是一个包含范围,所以它包含所有数字,从1到3,但如果您使用(1...3),则使用3个点代替2使其成为独占,因此它包含来自的所有数字1,最多但不包括3。

对于数组和哈希,#to_a,Array#[],#to_h和Hash#[]都可以使用。

(1..3).to_a
=> [1, 2, 3]

Array[1, 2, 3]
=> [1, 2, 3]

[[1, 2], [3, 4], [5, 6]].to_h
=> {1=>2, 3=>4, 5=>6}

Hash[ [[1, 2], [3, 4], [5, 6]] ]
=> {1=>2, 3=>4, 5=>6}

但他们可能在数组和哈希部分上寻找Array#[]Hash#[]

答案 2 :(得分:1)

对于阵列Array::[](例如直接从文档中获取):

Array.[]( 1, 'a', /^A/ ) # => [1, "a", /^A/]
Array[ 1, 'a', /^A/ ]    # => [1, "a", /^A/]
[ 1, 'a', /^A/ ]         # => [1, "a", /^A/]

同样有Hash::[]。不确定Ranges;事实上,文档(据我所知)只提及文字和Range::new

我无法理解你为什么要在文字中使用这些内容,但是你去了。