我有3条错误消息,我相信它们都与一件事有关-我在未正确定义的对象上调用方法。
我已经检查了错别字,空格,语法和命名。我正在遵循与该程序中其他所有测试都正常的方法相同的过程。
我已经缩小了循环范围,并相信问题出在这里:
def add(param)
@param << param
在完整的上下文中显示代码:
class Todo
def initialize(param)
@param = param
end
def text
return @param
end
end
class TodoList
def initialize
@item_list = []
end
def add(param)
@param << param
end
def print
@item_list.each do |param|
puts "* #{param.text}" #=> .text?
end
end
end
错误消息:
这是我要解决的错误消息。正如我之前提到的,它们看上去都指向一个我没有正确定义的方法,但是我还无法弄清楚为什么会这样。
1)问题1。待办事项列表TodoList添加待办事项会添加待办事项而不会引发错误 失败/错误:期望{todo_list.add(todo)} .to_not提高错误
expected no Exception, got #<NoMethodError: undefined method `<<' for nil:NilClass> with backtrace:
# ./questions/question_1.rb:43:in `add'
# ./spec/question_1_spec.rb:31:in `block (5 levels) in <top (required)>'
# ./spec/question_1_spec.rb:31:in `block (4 levels) in <top (required)>'
# ./spec/question_1_spec.rb:31:in `block (4 levels) in <top (required)>'
2)问题1。待办事项列表TodoList打印待办事项一个待办事项打印一个带有要点的待办事项 失败/错误:todo_list.add(todo)
NoMethodError:
undefined method `<<' for nil:NilClass
# ./questions/question_1.rb:43:in `add'
# ./spec/question_1_spec.rb:41:in `block (5 levels) in <top (required)>'
3)问题1。待办事项列表TodoList打印待办事项许多待办事项会打印待办事项,并以换行符分隔 失败/错误:todo_list.add(todo_1)
NoMethodError:
undefined method `<<' for nil:NilClass
# ./questions/question_1.rb:43:in `add'
# ./spec/question_1_spec.rb:59:in `block (5 levels) in <top (required)>'
谢谢!
答案 0 :(得分:1)
红宝石不知道您的TodoList类中的@param
是什么,您必须像解决问题的@param = []
这样的构造函数中对其进行初始化
答案 1 :(得分:0)
默认情况下,实例变量被初始化为nil
,因此会出现错误。因此,在您的TodoList
类中,您需要将@param
初始化为一个可以响应<<
的对象,在您自己的情况下,该对象是一个数组[]
class TodoList
def initialize
@param = []
end
end