2010-01-14 29 views
11

tôi cần phải chỉ vào một băm mà tôi đã xác định về "true" và "false"Cách truyền 1 và 0 thành true và false trong Ruby. Muốn có một boolean hoặc logic ra

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

Đối với mục đích thử nghiệm, tôi đang lập chỉ mục với rand (2) và không thành công. Nếu tôi lập chỉ mục với đúng thì nó hoạt động.

tôi đang tìm kiếm một cái gì đó giống như

rand (2) .logical

nhưng không thấy gì.

Trả lời

25

Có một cách đơn giản (mặc dù không phải là rất thú vị) để làm điều này:

rand(2) == 1 
1

[true,false].shuffle hoặc [true,false].sort { rand }

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

Làm thế nào về một cái gì đó như thế này?

[true,false][rand(2)] 

Tức là, trả lại kết quả ngẫu nhiên từ mảng đúng/sai. Đó chắc chắn là tiết hơn rand(2) == 1, mặc dù.

+3

Tôi thích ý tưởng này! Trong Ruby 1.9 bạn có thể thực hiện '[true, false] .sample' – Cimm

5

Tôi nghĩ rằng đây là một trong những cách tuyệt vời, và #sample là một trong những phương pháp mảng ít được biết đến:

[đúng, sai] .sample

Chỉnh sửa: Đây là chỉ có giá trị trong Ruby> = 1.9

Các vấn đề liên quan