调用一次 shuffle 方法并在 ruby 中多次使用输出

Call shuffle method once and use output multiple times in ruby

我在两个单独的文件中有两个 类。该脚本首先执行文件 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 方法执行三次,因此我将收到 3 种不同的 shuffle 方法输出。

v9srm6z@example.com
b9rlgti@example.com
c96nve1@example.com

我的问题:如何确保我可以使用 v9srm6z@example.com 三次?

记忆实例变量:

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