我想测试a是否等于or2

我能行

a == 1 || a == 2

但这需要重复a次(对于较长的变量来说,这会很烦人)

我想做a == (1 || 2)个,但显然不行

我能行 [1, 2].include?(a), which is not bad, but strikes me as a bit harder to read

只是想知道如何用惯用的ruby来实现这一点

推荐答案

第一种方法是惯用Ruby.不幸的是,Ruby没有Python的a in [1,2],我认为这会更好.你的[1,2].include? a是最接近的 Select ,我认为它有点落后于最自然的方式.

当然,如果你经常使用这个,你可以这样做:

class Object
  def member_of? container
    container.include? self
  end
end

然后你可以做a.member_of? [1, 2]次.

Ruby相关问答推荐

Ruby插值法导致无序输出

ruby 中嵌套哈希中相同键的平均值

Ruby 避免类方法并保持其类型系统简单优雅的秘诀

Ruby注入daisy链?

生成带有小写字母和数字的唯一随机字符串

Sinatra + Bundler?

从 URL 字符串中提取主机的 Ruby 代码

在 Ruby 中,如何确定字符串是否不在数组中?

如何在不使用 Ruby 保存到磁盘的情况下生成 zip 文件?

用mustache迭代数组

仅针对特定参数的 Rspec 存根方法

与 String 相比,在 Ruby 中使用 StringIO 有哪些优势?

Ruby中的常量或类变量?

Ruby 与计算机科学相关的 yield 特性

覆盖子类中的 ruby​​ 常量,以便继承的方法使用新常量而不是旧常量?

从命令行调用 ruby​​ 函数

rbenv、rvm 和 chruby 有什么区别?

Ruby 异常 - 为什么是else?

如何从字符串创建 Ruby 日期对象?

如何在 Capistrano v3 的服务器上运行 shell 命令?