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
令人惊叹的。谢谢你详细说明了一切。对像我这样的人很有帮助。