10

Rubyで3つの変数がすべて等しいことを保証する最も簡潔な方法は何ですか? 例えば

dog = 'animal'
cat = 'animal'
chicken = 'animal'
shoe = 'clothing'

# Something like this...which doesn't work
dog == cat == chicken # true   
dog == cat == shoe # false
4

3 に答える 3

19

3 つの要素の最も簡潔な方法は次のとおりです (がっかりさせて申し訳ありません)。

dog == cat && cat == chicken

もちろん、必要に応じていつでも賢くなれます...

[dog, cat, chicken] == [dog] * 3
[dog, cat, chicken].uniq.length == 1

...しかし、それは実際にはコードをより簡潔にする (または読みやすくする) わけではありません。

任意の数の要素が等しいかどうかを比較できる再利用可能な関数が必要な場合は、次のようにします。

def all_equal?(*elements)
  elements.all? { |x| x == elements.first }
end
于 2012-10-11T18:23:29.677 に答える
3
dog == cat && dog == chicken
于 2012-10-11T18:23:00.500 に答える