【问题标题】:Is there a reverse-syntax version of "include?" in core/std-lib? [duplicate]是否有“包含”的反向语法版本?在核心/标准库中? [复制]
【发布时间】:2013-02-21 12:44:49
【问题描述】:

我常用[1, 2, 3].include? foo 成语。这本身并没有什么问题,但是为了便于阅读,能够写foo.is_in? [1, 2, 3] 会很好。核心或标准库是否有方法可以做到这一点?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    不,标准中没有这种方法。自行实现:

    class Object
      def is_in? a
        return a.include?(self)
      end
    end
    

    请注意,在上面的代码中,我从不检查 a 的类型,因此如果未为 a 定义 include?,您将收到错误。

    【讨论】:

      【解决方案2】:

      不完全是你想要的方式,但你可以重写这个

      if [1, 2, 3].include? foo
        do_this
      else
        do_that
      end
      

      到这里:

      case foo; when 1, 2, 3
        do_this
      else
        do_that
      end
      

      【讨论】:

        猜你喜欢
        • 2020-05-17
        • 1970-01-01
        • 2017-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-21
        相关资源
        最近更新 更多