我对Ruby很陌生,最近几次我需要做以下事情:
1)声明变量 2)对变量 3执行操作 返回变量
当我觉得我应该能够
时1)在将其逐渐分配给变量然后返回时执行操作
为了说明我的意思,下面的示例生成一个随机的十六进制颜色。 我觉得这应该是一个班轮,但我不确定如何。
# This example generates a random color
color = "#"
6.times { color << "ABCDEF0123456789".chars.sample }
color #= "#ABC123"
# The above code seems cumbersome & what I want to do this
"#" << 6.times { color << "ABCDEF0123456789".chars.sample } #= "#\u0006"
我尝试了很多变化而没有成功。有没有办法可以做到这一点?时间循环是错误的方法吗?
答案 0 :(得分:4)
你要问的方法就是:
"#" + 6.times.map { "ABCDEF0123456789".chars.sample }.join
但是这样做可能更正确,更容易:
format "#%02x%02x%02x", rand(255), rand(255), rand(255)
或者:
require 'securerandom'
"#" + SecureRandom.hex(3)
答案 1 :(得分:0)
你也可以写:
"##{ 'Magpie'.gsub(/./) { |c| rand(16).to_s(16) } }"
#=> "#b1a501"
如果由于某种原因你需要.upcase
,请点击"#B1A501"
。