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

时间:2017-12-29 11:11:20

标签: ruby logic shuffle

我在两个单独的文件中有两个类。该脚本首先执行文件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三次?

1 个答案:

答案 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