2017-12-29 29 views
0

2つのクラスが2つの別々のファイルにあります。第二のファイル(message.rb)でシャッフルメソッドを一度呼び出して、ルビで複数回出力を使用する

require 'message.rb' 

class Domain 
def create_domain 
    10.times do 
    puts "#{Message.site}" 
    end 
end 

私はこのコードの平和を持っている:このスクリプトは、最初のファイル(domain.rb)私は、次のコードを持っていて、ファイルdomain.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 

私の問題:

この方法で三回は、私はシャッフル法の3種類の出力を受け取りますERGO .site私はこの方法を実行しています。

私の質問:どうすれば[email protected]を3回使うことができますか?

答えて

2

Memoizeインスタンス変数:

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 
+0

はありがとうございました!魅力のように働く – Peter

関連する問題