我還在學習Ruby,我很好奇在這種情況下使用類變量,常量還是局部變量是否合適。我想在這裏使用什麼樣的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
請注意,a)使用具有前導下劃線的_variables和b)顯式返回是方法的最後一個表達式,不是慣用的Ruby。另外,您可以將該行寫爲:new_username = 20.times.map {charset.choice} .join – tokland 2011-04-30 20:14:19
另一種創建用戶名的方法是:@username = rand(36 ** 20).to_s(36) – steenslag 2011-04-30 21:55:09