Как привести 1 и 0 в true и false в Ruby. Хотите логический или логический выход - PullRequest
11 голосов
/ 15 января 2010

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

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

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

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

Rand (2) .logical

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

Ответы [ 4 ]

25 голосов
/ 15 января 2010

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

rand(2) == 1
6 голосов
/ 15 января 2010

Как насчет этого?

[true,false][rand(2)]

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

5 голосов
/ 31 марта 2012

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

[истина, ложь]. Образец

Редактировать: Это действительно только в Ruby> = 1,9

1 голос
/ 15 января 2010

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

def get_bool
   [true,false].shuffle.shift
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...