如何(更好)检查多维数组中的元素存在?

时间:2009-11-04 22:48:23

标签: ruby

我该如何避免这样做?

if boolean_array[day] && boolean_array[day][slot] && boolean_array[day][slot].zero?
  # boolean_array[day][slot] element exists
end

5 个答案:

答案 0 :(得分:7)

基本上,您需要andand方法。然后,您可以if boolean_array[day].andand[slot].andand.zero?

Raganwald有one popular implementation

答案 1 :(得分:2)

我喜欢Chuckandand。我想你也可以使用低优先级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