Ruby 控制台向后打印

Ruby 控制台向后打印,ruby,Ruby,我正在尝试让代码打印一个类的名称,然后在同一行上显示问候语。例如: (DriveThru): Hi, welcome to Starbucks! What can I get started for you? class Lobby include Order attr_reader :name def initialize(name) @name = name end def greeting "Hi, welcome to Starbucks! How

我正在尝试让代码打印一个类的名称,然后在同一行上显示问候语。例如:

(DriveThru): Hi, welcome to Starbucks! What can I get started for you?
class Lobby
  include Order
  attr_reader :name
  def initialize(name)
    @name = name
  end
  def greeting
    "Hi, welcome to Starbucks! How are you doing today #{self.name}?"
  end
end
这是我的密码:

module Order
  def order_drink
    "(#{self.class.name}): #{self.greeting}"
  end
end

class Lobby
  include Order
  attr_reader :name
  def initialize(name)
    @name = name
  end
  def greeting
    puts "Hi, welcome to Starbucks! How are you doing today #{self.name}?"
  end
end

class DriveThru
  include Order
  attr_reader :name
  def initialize(name)
    @name = name
  end
  def greeting
    puts "Hi, welcome to Starbucks! What can I get started for you #{self.name}?"
  end
end

dt = DriveThru.new("Tom")
lb = Lobby.new("Jessica")

puts dt.order_drink
puts lb.order_drink
当我运行代码时,它首先打印问候语,换行,然后打印类名,如下所示:

"Hi, welcome to Starbucks! What can I get started for you?"
(DriveThru):

我做错了什么?

您的
问候
函数正在执行
put
语句。由于Ruby(和大多数其他编程语言)的工作方式,
order\u-drink
方法将首先评估
greeting
方法(调用
put
语句)的内容,然后再返回其自身的值

删除
会将
放在每个
问候语的开头,例如:

(DriveThru): Hi, welcome to Starbucks! What can I get started for you?
class Lobby
  include Order
  attr_reader :name
  def initialize(name)
    @name = name
  end
  def greeting
    "Hi, welcome to Starbucks! How are you doing today #{self.name}?"
  end
end
这将导致脚本输出以下内容:

(DriveThru): Hi, welcome to Starbucks! What can I get started for you Tom?
(Lobby): Hi, welcome to Starbucks! How are you doing today Jessica?
也就是说,最好为问候语属性添加一个
attr_reader
,并在
initialize
方法(也称为构造函数)中设置其值,如下所示:

class Lobby
  include Order
  attr_reader :name, :greeting
  def initialize(name)
    @name = name
    @greeting = "Hi, welcome to Starbucks! How are you doing today #{name}?"
  end
end

令人惊叹的。谢谢你详细说明了一切。对像我这样的人很有帮助。