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

问题描述 投票:0回答:1

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

[email protected]
[email protected]
[email protected]

我的问题:我怎样才能确保我可以使用[email protected]三次?

ruby logic shuffle
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.