gpt4 book ai didi

ruby-on-rails - 与 Range 类的文字构造函数等效的命名构造函数是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 08:22:05 24 4
gpt4 key购买 nike

rails 有点新。我正在完成 Michael Hartl 的学习 Rails 教程中 4.4.1 的练习,我有点不清楚类 Range 的命名构造函数是什么

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

(1..10)
=>1..10

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

Range.new(1..10)

我收到一个错误

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

我尝试添加多种类型的额外参数,即

Range.new(1)..Range.new(10)
Range.new(1)..(10)
etc..

但我总是遇到参数错误。

最佳答案

ArgumentError: wrong number of arguments (given 1, expected 2..3)

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

Range.new(1,10)

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

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]

参见 documentation .

你的代码

Range.new(1..10)

这还是Range#new只有一个参数:一个已经初始化的范围!

Range.new(1)..Range.new(10)

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

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

Range.new(1)..(10)

和之前一样的问题。 Range.new 只有 1 个参数,这将是介于 Range 和 Integer 之间的范围!

关于ruby-on-rails - 与 Range 类的文字构造函数等效的命名构造函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com