在红宝石中将两个不同的"范围"组合成一个

Rad*_*ika 14 arrays shuffle ruby-on-rails range

我想将rails中的两个不同范围组合成一个数组.有没有相同的简短方法?

我正在编写代码来生成随机字母数字字符串.

现在我有:

('a'..'z').to_a.shuffle.first(16).join
Run Code Online (Sandbox Code Playgroud)

我也尝试过这样的事情:

('a'..'z').to_a.push('0'..'9').shuffle.first(16).join
Run Code Online (Sandbox Code Playgroud)

这显然不起作用.我知道我可能会忽略一些简单的方法来做到这一点,但我无法找到一个,任何帮助将不胜感激.提前致谢:)

kmi*_*ael 33

我有一个更好的方法:使用splat运算符!

[*'0'..'9', *'a'..'z', *'A'..'Z'].sample(16).join
Run Code Online (Sandbox Code Playgroud)


khm*_*m12 5

更优雅的方式:

['a'..'z', '0'..'9'].flat_map(&:to_a).sample(16).join
Run Code Online (Sandbox Code Playgroud)