Ruby on Rails教程:使用符号键定义哈希

时间:2017-07-11 13:07:27

标签: ruby-on-rails ruby hash

关于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

(是的,我知道这是一个非常简单的练习,如果之前有人问过,我会道歉。)

1 个答案:

答案 0 :(得分:3)

可以做出许多改进:

  1. 使用Array#sample获取随机字母(它有一个优势:字母可能实际上在密码中重复,而shuffle[0..15]将返回16 不同的字母); < / LI>
  2. 避免使用冗余的局部变量,特别是return
  3. 你走了:

    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
    

    :)