ruby - ruby 中的三向比较

标签 ruby

在 ruby​​ 中确保三个变量都相等的最简洁的方法是什么?例如

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

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

最佳答案

三元素最简洁的方式是(抱歉让你失望了):

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

关于ruby - ruby 中的三向比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12846080/

相关文章:

ruby - Mechanize 和 NTLM 身份验证

ruby - 解析文本文件并生成 CSV

ruby-on-rails - 动态创建转义常量(Ruby on Rails)

ruby-on-rails - Rails 3 Join——只选择某些列

ruby - 如何匹配所有语言的字符,除了 ruby​​ 中的特殊字符

sql - 在 Rails Console for PostgreSQL 的表中显示数据

ruby-on-rails - Ruby:创建沙盒评估?

ruby-on-rails - Ruby 删除哈希数组中的重复条目,但基于多个值

ruby-on-rails - Rails中where查询的结果

objective-c - 来自脚本语言(Lua、Ruby 等)的 Cocoa 桥是否需要 MacOS 上的编译部分才能工作?