在红宝石中一次检查几个布尔值

wac*_*nia 0 ruby boolean

我有一些对象(不是所有对象)的记录,我必须检查它们是真还是假,以标记另一条记录是真还是假.这就是我现在正在做的事情:

step_finished = object.one == true &&  object.two == true && object.three == true &&  object.four == true
Run Code Online (Sandbox Code Playgroud)

我敢肯定必须有一个更好的方法,但我找不到它.我有另外一步要检查20个值,所以如果你知道一个更有效的方法检查这个,请帮忙!

谢谢!

Tom*_*ech 5

你不需要测试== true; 只需测试某事物的"真实性"就足够了.在布尔上下文中没有nilfalse将要评估的任何内容.所以这样就足够了:true

step_finished = object.one && object.two && object.three && object.four
Run Code Online (Sandbox Code Playgroud)

您还可以使用all?:

step_finished = [object.one, object.two, object.three, object.four].all?
Run Code Online (Sandbox Code Playgroud)