我仍然是Ruby的新手。我参加了Codecademy的课程,我现在正在做“决赛”,我必须在这里做一个待办事项清单。
待办事项列表的一个部分是能够添加任务(显然)。另一部分是能够显示所有当前任务。现在,从技术上讲,这两个都有效。但是,当我使用我创建的类(Task)创建一个新任务然后显示任务时,它会显示对象ID而不是字符串。如果我只使用我的add方法而不使用我的Task类,它将显示我想要的字符串。
我的目标是让我的脚本在使用Task类时显示字符串。如果有人可以向我解释为什么它不起作用以及我如何解决它,我会很感激。
以下是代码:
## Classes ##
#List Class - Used for anything involving the list
class List
attr_reader :all_tasks
def initialize
@all_tasks = []
end
def add(task)
all_tasks << task
end
def show
all_tasks
end
end
#Task Class - Used for anything involving Tasks
class Task
attr_reader :description
def initialize(description)
@description = description
end
end
## Modules ##
module Promptable
def prompt(message = "What would you like to do?", symbol = " >: ")
print message
print symbol
gets.chomp
end
def show
menu
end
end
module Menu
def menu
puts "
'add' - Add a task to the list \n
'delete' - Delete a task from the list \n
'update' - Update a task in the list \n
'show' - Shows current tasks in list"
end
end
#Methods - various methods
#Program Runner
if __FILE__ == $PROGRAM_NAME
include Menu
include Promptable
my_list = List.new
puts "Please choose from the following list: "
until ['q'].include?(user_input = prompt(show).downcase)
case user_input
when 'add'
puts "What task would you like to do?"
my_list.add(Task.new(gets.chomp))
when 'q'
puts "Qutting...."
when 'show'
puts my_list.show
else "That is not a valid command"
end
end
end
答案 0 :(得分:2)
puts my_list.show
将逐个显示任务。由于Task
类没有to_s
方法,因此将使用默认方法。只需添加一个:
class Task
# ...
alias to_s description
end
BTW字符串也是对象。 Ruby中的所有东西都是一个对象。