关于Michael Hartl在第4.3.3节(哈希与符号)中的RoR教程中的练习:
“使用与姓名,电子邮件和”密码摘要“对应的符号键定义哈希值,以及与您的姓名,电子邮件地址以及16个小写字母的随机字符串相等的值。”
我希望得到一些输入和/或替代品& '更好'的解决方案(或至少一些关于我的解决方案的批评)。
def my_hash
a = ('a'..'z').to_a.shuffle[0..15].join
b = { name: "John", email: "johndoe@gmail.com", password: a }
return b
end
puts my_hash
(是的,我知道这是一个非常简单的练习,如果之前有人问过,我会道歉。)
答案 0 :(得分:3)
可以做出许多改进:
Array#sample
获取随机字母(它有一个优势:字母可能实际上在密码中重复,而shuffle[0..15]
将返回16 不同的字母); < / LI>
return
。你走了:
def my_hash
{
name: "John",
email: "johndoe@gmail.com",
password: ('a'..'z').to_a.sample(16).join
}
end
puts my_hash
加成:
我偶然发现了原始代码中的第三个小故障。应该是:
def my_hash
{
name: "Brandon",
email: "brandon.elder@gmail.com",
password: ('a'..'z').to_a.sample(16).join
}
end
:)