我试图建立一个主谋游戏,我希望有我的代码示例自己的对象包含有关的地方和颜色的步骤在通行码。这是这样我就可以改变长度的通行码没有硬编码它。有一种方法来跟踪这些对象,看到我没有亲自分配一个变量?我的程序可以分配示例自己的变量名,如果是的话我该怎么做
#Builder for password objects
class ColorPicks
attr_reader :color, :place
def initialize(color, place)
@color = color
@place = place
end
end
# Determines how long the password should be
module StartUp
def self.how_many
@how_many
end
def HowManyColors
p "How long should the computer's code be?"
@how_many = gets.chomp.to_i
end
end
#Instances the password objects from ColorPicks
class Printer
include StartUp
@@i = StartUp.how_many
@@place = 1
COLORS = {1 => 'red', 2 => 'blue', 3 => 'green'}
def self.code_maker
for a in 1..@@i do
number_of_colors = COLORS.length
random_number = rand(number_of_colors)
ColorPicks.new(COLORS[random_number], @@place)
@@place += 1
end
end
end
PS.抱歉,我是编程新手。
2条答案
按热度按时间kqlmhetl1#
对对象的引用存储在变量中,例如
ColorPicks
类中的 * 示例变量 *@color
。只有示例本身可以直接访问示例变量。其他对象只能通过方法调用间接访问它,例如attr_reader :color
创建一个color
方法,该方法返回@color
所引用的对象。如果你想存储可变数量的对象,你通常会使用一个 * 集合 *,比如
Array
,Hash
或Set
,而不是将每个对象赋给一个单独的变量,你可以将对象添加到集合中,然后将集合赋给一个变量,例如:示例用法:
generator.code
返回的对象是我们在initialize
中赋给@code
的数组。要访问集合中的单个对象,可以使用Array#[]
:(注意Ruby中的数组是从零开始的)在上面的例子中,我使用了纯字符串来保持代码的简单性。然而这个概念适用于所有对象,也就是说,你可以添加
ColorPicks
的示例来代替字符串。你也不必使用Array.new
构造函数来构建数组。从一个空数组开始,然后在循环中一个接一个地添加你的元素是非常好的,例如:j2cgzkjk2#
您可以编写下面的一些变体,其中创建的所有示例都保存到类示例变量所持有的数组中。
注意,
@instances
是一个类示例变量,它的getter是在ColorPick
的单例类中创建的。创建一个示例。
然后,
现在我们可以看到已经创建的
ColorPicks
示例:现在创建第二个示例。
然后,
现在,