Я Я новичок в Ruby, и пытается понять, почему это работает (это, кажется, по крайней мере, по "the Master"):неявной значение, если /, если заявление в рубине
def array_of_fixnums?(array)
true unless array.find { |item| item.class != Fixnum }
end
Меня беспокоит то, где «ложность» возникает, когда массив содержит нефиксированные значения. Правильно ли я предполагаю, что в заявлении unless
нет неявного «else false
»? В этом случае я предполагаю, что он должен поступать из значения nil
, возвращаемого Enumerable#find
. Это верно?
Если да, это кажется немного шатким. Может быть, лучше вернуть false
явно, вот так?
array.find { |item| item.class != Fixnum } ? false : true
Есть ли другой, лучший способ полностью? Спасибо, что помогли мне обернуть мою голову вокруг этого и для любых предложений «лучшей практики».
Почему вы считаете «ноль» ложным шатком? – steenslag
Ноль не возвращается из array.find(), но из-за того, что ваш метод не имеет возвращаемого значения (следовательно, nil) в случае, когда массив содержит значение, отличное от Fixnum. Решение array.all() ниже, потому что оно более явное. – AndyV