我想知道有没有更干净的方法。基本上,我想从一个可变长度的数组中随机选择一个元素。通常,我会这样做:
myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]
是否有更易于阅读/更简单的内容来取代第二行?还是说这是最好的方法。我想你可以用myarray。shuffle。首先,但我只看到#shuffle几分钟前在SO,我实际上还没有使用它。
arr = [1,9,5,2,4,9,5,8,7,9,0,8,2,7,5,8,0,2,9]
arr[rand(arr.count)]
这将从数组中返回一个随机元素。
如果您将使用下面提到的行
arr[1+rand(arr.count)]
然后在某些情况下它将返回0或nil值。
下面提到的一行
rand(number)
总是返回从0到1的值。
如果我们使用
1+rand(number)
然后返回number, arr[number]不包含任何元素。
class String
def black
return "\e[30m#{self}\e[0m"
end
def red
return "\e[31m#{self}\e[0m"
end
def light_green
return "\e[32m#{self}\e[0m"
end
def purple
return "\e[35m#{self}\e[0m"
end
def blue_dark
return "\e[34m#{self}\e[0m"
end
def blue_light
return "\e[36m#{self}\e[0m"
end
def white
return "\e[37m#{self}\e[0m"
end
def randColor
array_color = [
"\e[30m#{self}\e[0m",
"\e[31m#{self}\e[0m",
"\e[32m#{self}\e[0m",
"\e[35m#{self}\e[0m",
"\e[34m#{self}\e[0m",
"\e[36m#{self}\e[0m",
"\e[37m#{self}\e[0m" ]
return array_color[rand(0..array_color.size)]
end
end
puts "black".black
puts "red".red
puts "light_green".light_green
puts "purple".purple
puts "dark blue".blue_dark
puts "light blue".blue_light
puts "white".white
puts "random color".randColor