私はまだRubyを学んでおり、このシナリオでクラス変数、定数、またはローカル変数を使用することが適切かどうかについて興味があります。
以下のコード例(固定文字セットからランダムなユーザー名を生成する)では@username
、インスタンス変数として割り当てるのはかなり明白です。しかし、文字セットを定数として割り当てるのか、クラス変数として割り当てるのかが気になります。このシナリオで別の変数タイプを使用する利点は何ですか?
現在の例では、_charset
はすべてのインスタンスで計算されます。(私の仮定が間違っている場合は訂正してください。)また、計算はクラス変数と定数の両方として(再計算ではなく)インスタンス間で共有されると仮定しますか?
class NewAccount
def initialize
@username = self.generate_username
end
def generate_username
_charset = ('a'..'z').to_a + ('0'..'9').to_a
_newusername = Array.new(20) { _charset[rand(_charset.length)] }.join
return _newusername
end
end