Как передать 1 и 0 в true и false в Ruby. Хотите логическое или логическое изложение

Мне нужно индексировать хэш, который я определил в терминах "true" и "false"

colorHash = Hash.new { |hash, key| hash[key] = {} }
colorHash["answers"][true]  = "#00CC00"
colorHash["answers"][false] = "#FFFFFF"

В целях тестирования я индексирую rand (2), и это терпит неудачу. Если я индексирую true, он работает.

Я искал что-то вроде

Rand (2).logical

но ничего не найти.

Ответ 1

Существует простой (хотя и не очень интересный) способ сделать это:

rand(2) == 1

Ответ 2

Как насчет чего-то подобного?

[true,false][rand(2)]

То есть, возвратите случайный результат из массива true/false. Это, конечно, более многословно, чем rand(2) == 1.

Ответ 3

Я думаю, что это один из самых крутых способов, а #sample - один из менее известных методов Array:

[true, false].sample

Изменить: это допустимо только в Ruby >= 1.9

Ответ 4

[true,false].shuffle или [true,false].sort { rand }

def get_bool
   [true,false].shuffle.shift
end