在ruby中使用SHOW向数组添加字符串
作为在线Ruby教程的一部分,我必须创建一个基于文本的游戏。一个要求是我使用在ruby中使用SHOW向数组添加字符串,ruby,arrays,module,include,require,Ruby,Arrays,Module,Include,Require,作为在线Ruby教程的一部分,我必须创建一个基于文本的游戏。一个要求是我使用require拉入另一个文件。我已经这样做了,还包括了包含方法的模块。然而,我不能产生我想要的结果。这是我的模块文件: module Inventory def Inventory.inventory(item) items = Array.new if item == "show" items.inspect else items << item
require
拉入另一个文件。我已经这样做了,还包括了包含方法的模块。然而,我不能产生我想要的结果。这是我的模块文件:
module Inventory
def Inventory.inventory(item)
items = Array.new
if item == "show"
items.inspect
else
items << item
end
end
end
模块清单
def库存。库存(项目)
items=Array.new
如果项目==“显示”
检查
其他的
items作为一个类,这将更有意义。通过这种方式,您可以将项目存储在实例变量中,该实例变量将在多次调用add
、show
等过程中保持不变。当然,您可以将此类放入单独的文件中,并且仍然包含它
class Inventory
def initialize
@items = []
end
def add(item)
@items << item
end
def show
@items.inspect
end
end
# To use the class:
inventory = Inventory.new
inventory.add('bat')
inventory.show
# => ["bat"]
类目录
def初始化
@项目=[]
结束
def添加(项目)
@项目[“bat”]
作为一个类,这将更有意义。通过这种方式,您可以将项目存储在实例变量中,该实例变量将在多次调用add
、show
等过程中保持不变。当然,您可以将此类放入单独的文件中,并且仍然包含它
class Inventory
def initialize
@items = []
end
def add(item)
@items << item
end
def show
@items.inspect
end
end
# To use the class:
inventory = Inventory.new
inventory.add('bat')
inventory.show
# => ["bat"]
类目录
def初始化
@项目=[]
结束
def添加(项目)
@项目[“bat”]
问题在于每次调用此方法时都会重新创建items数组,因此对于传递到数组中的内容,方法调用之间没有持久性。Dylan Markow的回答说明了如何使用实例变量在方法调用之间持久化值。问题是每次调用此方法时都会重新创建items数组,因此在方法调用之间不会持久化传递到数组中的内容。Dylan Markow的回答说明了如何使用实例变量在方法调用之间持久化值。如果您想使用实例方法或使用类变量,可以使用Dylan的回答
代码的问题是,每次调用库存
时,都会初始化项
局部变量
以下是一个将项目持久化到类变量中的版本:
module Inventory
def Inventory.inventory(item)
@@items ||= Array.new
if item == "show"
@@items.inspect
else
@@items << item
end
end
end
Inventory.inventory 1
Inventory.inventory 2
p Inventory.inventory 'show'
如果您想使用实例方法,或者您可以使用类变量,您可以使用Dylan的答案
代码的问题是,每次调用库存
时,都会初始化项
局部变量
以下是一个将项目持久化到类变量中的版本:
module Inventory
def Inventory.inventory(item)
@@items ||= Array.new
if item == "show"
@@items.inspect
else
@@items << item
end
end
end
Inventory.inventory 1
Inventory.inventory 2
p Inventory.inventory 'show'
看来我对类和实例变量的理解不如我想象的那样好。我练习的一部分是创建类,那么如何让这个库存类在其他类中工作呢?我使用继承吗?我被告知要不惜一切代价避免元编程。看来我对类和实例变量的理解不如我想象的那样好。我练习的一部分是创建类,那么如何让这个库存类在其他类中工作呢?我使用继承吗?我被告知要不惜一切代价避免元编程。谢谢!这起作用了。还有一些事情我不明白:为什么我需要“p”或打印库存。库存(“显示”)?为什么我们不需要打印它?为什么使用条件赋值运算符(| |=)?据我所知,如果变量还没有赋值,这个操作符会给变量赋值。但是空数组([])不被视为值吗?| |=
是零保护。只有当它为nil时,它才会初始化@@items
p
,print
,puts
用于将内容发送到标准输出。我理解p/print/puts,但我认为.inspect方法会自动将内容打印出来。每天学习新的东西。谢谢!这起作用了。还有一些事情我不明白:为什么我需要“p”或打印库存。库存(“显示”)?为什么我们不需要打印它?为什么使用条件赋值运算符(| |=)?据我所知,如果变量还没有赋值,这个操作符会给变量赋值。但是空数组([])不被视为值吗?| |=
是零保护。只有当它为nil时,它才会初始化@@items
p
,print
,puts
用于将内容发送到标准输出。我理解p/print/puts,但我认为.inspect方法会自动将内容打印出来。每天学习新的东西。