我需要在 ruby中创建一个程序来生成像KU765或NG274样式的机器人名称 并存储它们并检查它以避免重复. 我还需要制作一个“重置”方法来删除所有存储的名称并重新开始. 该程序由于某种
并存储它们并检查它以避免重复.
我还需要制作一个“重置”方法来删除所有存储的名称并重新开始.
该程序由于某种原因不起作用.我希望有人帮助我找到错误.
非常感谢.
class Robot
attr_accessor :named , :stored_names , :rl
def self.name
new.name
end
@@rl = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def name
named = ""
named << @@rl[rand(26).to_i]
named << @@rl[rand(26).to_i]
named << rand(100..999).to_s
named.save_name
named.check_name
end
def save_name
stored_names = []
stored_names << named
end
def check_name
stored_names.uniq!
end
def reset
stored_names = Array.new
end
end
def save_name stored_names = [] stored_names << named end
每次创建一个名称,并通过为stored_names指定一个空数组来调用save_name删除所有以前创建的名称
编辑:
还有一些错误,让我先发布一个有效的解决方案:
class Robot
attr_accessor :named , :stored_names , :rl
def initialize()
@stored_names = []
end
@@rl = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ".chars.to_a
def name
@named = ""
@named << @@rl.sample
@named << @@rl.sample
@named << rand(100..999).to_s
save_name
check_name
end
def save_name
@stored_names << @named
end
def check_name
@stored_names.uniq!
end
def reset
@stored_names = Array.new
end
end
>要访问对象的成员,必须使用@作为前缀.>您在@named上调用了save_name和check_name,这是一个字符串,但不提供这些方法> @stored_names必须初始化为空数组,然后才能使用<<将元素推入其中.这通常在类的构造函数initialize()中完成
