我在两个单独的文件中有两个类。该脚本首先执行文件domain.rb
在第一个文件(domain.rb)中,我有以下代码:
require 'message.rb'
class Domain
def create_domain
10.times do
puts "#{Message.site}"
end
end
在第二个文件(message.rb)中,我有这样的代码:
class Message
def self.site
@site = [*('a'..'z'),*('0'..'9')].shuffle[0,7].join
@site.concat("@example.com")
end
def other_method
puts "#{Message.site} later in the text #{Message.site}"
end
end
我的问题:
这样我执行方法.site三次ergo我会收到3种不同的shuffle方法输出。
v9srm6z@example.com
b9rlgti@example.com
c96nve1@example.com
我的问题:如何确保我可以使用v9srm6z@example.com三次?
答案 0 :(得分:2)
记住实例变量:
class Message
def self.site
@site ||= [*('a'..'z'),*('0'..'9')].
shuffle[0,7].
join.
concat("@example.com")
end
puts "#{Message.site} later in the text #{Message.site}"
end
旁注:使用Array#sample
参数而不是改组:
class Message
def self.site
@site ||= [*('a'..'z'),*('0'..'9')].
sample(8).
join.
concat("@example.com")
end
end