ruby - 如何简单地将一个模块用于不同的类?如(String、Array、Hash)

标签 ruby

我为 Enumerables 模块编写了代码:

module Enumerables
  def palindrome?
    if self.is_a?(Hash)
      return false
    else
      self.join('').gsub(/\W/,"").downcase == self.join('').gsub(/\W/,"").downcase.reverse
    end
  end
end

问题是,我必须写这些:

class Array
  include Enumerables
end

class Hash
  include Enumerables
end

使代码运行成功。

有没有简单的方法来制作“回文”?使用不同实例类型运行的方法?

最佳答案

模块不是Enumerables而是Enumerable 所以如果你有

module Enumerable
  def palindrome?
    ...
  end
end

它会在没有包含的情况下工作。

如果你想将此方法添加到所有对象,请参阅 texasbruce 的答案。

关于ruby - 如何简单地将一个模块用于不同的类?如(String、Array、Hash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905415/

相关文章:

ruby-on-rails - 使用 RABL 和 Draper 渲染 to_json

sql - Rails 控制台 : update column values with trimmed values

ruby - 为什么我的 ActiveRecord 范围为 `merge` 返回一个数组?

ruby - 如何完全停止 Whenever Cron 作业?

ruby - 我如何找到一个开源 Ruby 项目来开展工作?

ruby - compass 在更新到 Mavericks 时抛出错误

ruby - 通过 API 和 ruby​​ 创建优惠券返回错误 : woocommerce_api_missing_coupon_data

ruby - 用于在 Ruby 中转换物理单位(千克、磅)的库?

ruby - Ruby 的 Time 类可以表示的时间范围是多少?

ruby - log4r 示例的系统日志输出