Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中将对象的属性显示为字符串_Ruby - Fatal编程技术网

如何在Ruby中将对象的属性显示为字符串

如何在Ruby中将对象的属性显示为字符串,ruby,Ruby,我有两个课程列表和任务: 输出: 您的任务列表: 给妈妈送生日礼物 我希望能够将待办事项列表中的任务显示为字符串,同时将任务实例作为数组中的对象。如何做到这一点?考虑到您问题中的代码,只需重新定义任务的方法即可 输出 您的任务列表: 任务:做早餐 任务:洗盘子! 给妈妈送生日礼物 使用任务实例调用add: my_list.add(Task.new("Wash the dishes!")) my_list.add("Send Birthday Gift to Mom") class List

我有两个课程列表和任务:

输出:

您的任务列表: 给妈妈送生日礼物
我希望能够将待办事项列表中的任务显示为字符串,同时将任务实例作为数组中的对象。如何做到这一点?

考虑到您问题中的代码,只需重新定义任务的方法即可

输出 您的任务列表: 任务:做早餐 任务:洗盘子! 给妈妈送生日礼物 使用任务实例调用add:

my_list.add(Task.new("Wash the dishes!"))
my_list.add("Send Birthday Gift to Mom")
class List
  # ...

  def add(task)
    task = Task.new(task) unless task.is_a? Task
    @all_tasks << task
  end
end
对于字符串实例:

my_list.add(Task.new("Wash the dishes!"))
my_list.add("Send Birthday Gift to Mom")
class List
  # ...

  def add(task)
    task = Task.new(task) unless task.is_a? Task
    @all_tasks << task
  end
end
在一个数组中混合使用任务和字符串实例会使处理变得更加困难。除非您确实想要或需要,否则我将更改add,以便它将字符串参数转换为任务实例:

my_list.add(Task.new("Wash the dishes!"))
my_list.add("Send Birthday Gift to Mom")
class List
  # ...

  def add(task)
    task = Task.new(task) unless task.is_a? Task
    @all_tasks << task
  end
end
为每个任务实例返回一个带有字符串的新数组。每个字符串都包含相应任务的描述,前缀为[],类似于一个小复选框。然后使用换行符作为分隔符连接这些字符串元素

输出:

您的任务列表: []做早餐 []洗碗! []给妈妈送生日礼物
可能值得注意的是,这是有效的,因为如果使用数组调用,则会将每个元素打印到新行上。为了更好地控制输出,Listshow应该返回一个字符串。谢谢你的帮助。由于我刚刚开始学习rubymy第二周,我想现在,为什么在我将def写入_s的那一刻,ruby不再显示表示输出的字符串?@Stefan你能解释一下Listshow是什么/意味着什么以及如何实现它吗?这可能是个愚蠢的问题,但如果我不问的话,我什么也学不到:-再次感谢你的支持help@SebastianPeterListshow是指List类中的show实例方法。它当前返回一个数组,而它可能应该返回一个字符串。我发布了一个答案,显示了一种稍微不同的方法。请注意,尽管attr_reader:all_tasks看起来是只读的,但它允许调用者修改所有_tasks,例如my_list。all_tasks再次感谢您。这甚至更好。我觉得我在理解Ruby方面有了很大的进步。