Range类的文字构造函数的等效命名构造函数是什么?

Mis*_*Cal 2 ruby ruby-on-rails

对Rails来说有点新。我正在迈克尔·哈特尔(Michael Hartl)的Learn Rails教程中进行4.4.1的练习,但对于Range类的命名构造函数是什么,我还是不清楚

当我在控制台中键入文字构造函数时,它将返回适当的值

(1..10)
=>1..10
Run Code Online (Sandbox Code Playgroud)

但是当我尝试命名构造函数时

Range.new(1..10)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

ArgumentError: wrong number of arguments (given 1, expected 2..3)
    from (irb):104:in `initialize'
    from (irb):104:in `new'
Run Code Online (Sandbox Code Playgroud)

香港专业教育学院试图添加许多类型的额外参数,即

Range.new(1)..Range.new(10)
Range.new(1)..(10)
etc..
Run Code Online (Sandbox Code Playgroud)

但是我总是遇到参数错误。

Eri*_*nil 5

ArgumentError:参数数量错误(给定1,预期为2..3)

应该提示您至少需要两个参数:

Range.new(1,10)
Run Code Online (Sandbox Code Playgroud)

第三个参数用于指定是否排除范围的最后一个元素:

Range.new(1,10,false).to_a
# equivalent to (1..10)
# => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Range.new(1,10,true).to_a
# equivalent to (1...10)
# => [1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

请参阅文档

您的密码

Range.new(1..10)
Run Code Online (Sandbox Code Playgroud)

这仍然Range#new只有一个参数:已经初始化的Range!

Range.new(1)..Range.new(10)
Run Code Online (Sandbox Code Playgroud)

这是一种a..b语法,因此它尝试在a和之间初始化一个Range b。什么aRange.new(1),因为它只有1个参数,所以未定义。无论如何,您不能在2个范围之间创建范围:

Range.new(1,2)..Range.new(4,5)
#=> ArgumentError: bad value for range

Range.new(1)..(10)
Run Code Online (Sandbox Code Playgroud)

与以前一样的问题。仅1个参数Range.new,这将是范围和整数之间的范围!