我该如何避免这样做?
if boolean_array[day] && boolean_array[day][slot] && boolean_array[day][slot].zero?
# boolean_array[day][slot] element exists
end
答案 0 :(得分:7)
基本上,您需要andand
方法。然后,您可以if boolean_array[day].andand[slot].andand.zero?
。
Raganwald有one popular implementation。
答案 1 :(得分:2)
我喜欢Chuck的andand
。我想你也可以使用低优先级and
在纯Ruby中做,至少不会有任何问题:
>> day = slot = 1; boolean_array = [[], [1,2]]
>> if t = boolean_array[day] and t = t[slot] and t = t.class
>> puts t
>> end
Fixnum
答案 2 :(得分:1)
另一种方法是使用内联救援:
boolean_array[day][slot].zero? rescue nil
答案 3 :(得分:0)
如果可能的话,初始化日期和那样你可以检查boolean_array [day] [slot] .nil?
答案 4 :(得分:0)
你可以在没有额外宝石的情况下完成。根据您拥有的值,将to_i
更改为to_f
等等。
if boolean_array[day].to_a[slot].to_i.zero?
# boolean_array[day][slot] element exists
end