2010-01-14 15 views
11

necesito para indexar en un hash que he definido en términos de "verdadero" y "falso"Cómo convertir 1 y 0 en verdadero y falso en Ruby. ¿Quieres un booleano o lógico a cabo

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

Para propósitos de prueba, estoy de indexación con rand (2) y que falla Si indico con verdadero, funciona.

que estaba buscando algo así como

rand (2) .logical

pero encontrar nada.

Respuesta

25

Hay una manera sencilla (aunque no muy emocionante) para hacer esto:

rand(2) == 1 
1

[true,false].shuffle o [true,false].sort { rand }

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

¿Qué tal algo como esto?

[true,false][rand(2)] 

Es decir, devuelve un resultado aleatorio de la matriz de verdadero/falso. Ciertamente es más detallado que rand(2) == 1, sin embargo.

+3

¡Me gusta esta idea! En Ruby 1.9 puedes hacer '[true, false] .sample' – Cimm

5

Creo que esta es una de las maneras más frescas, y #sample es uno de los métodos de matriz menos conocidos:

[verdadero, falso] .sample

Editar: Esto sólo es válido en Ruby> = 1.9

Cuestiones relacionadas