ruby-on-rails - 如何检查 ruby​​ 中属性的类类型?

标签 ruby-on-rails ruby

如何创建如下方法:

def process_by_type *things

  things.each {|thing|
    case thing.type
      when String

      when Array

      when Hash

      end

    end
  }
end

我知道我可以使用 kind_of?(Array) 等。但我认为这会更简洁,而且我无法在 Class:Object 文档页面上找到它的方法。

最佳答案

像你正在做的那样使用案例陈述的形式:

case obj
  when expr1
    # do something
  when expr2
    # do something else
end

相当于执行一堆 if expr === obj (三等号比较)。当 expr 是类类型时,如果 obj 是 expr 的类型或 expr 的子类,则 === 比较返回 true。

因此,以下内容应该符合您的预期:

def process_by_type *things

  things.each {|thing|
    case thing
      when String
        puts "#{thing} is a string"
      when Array
        puts "#{thing} is an array"
      when Hash
        puts "#{thing} is a hash"
      else
        puts "#{thing} is something else"
    end
  }
end

关于ruby-on-rails - 如何检查 ruby​​ 中属性的类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317247/

相关文章:

ruby-on-rails - 如何在 OS X Mountain Lion 上完全卸载 RailsInstaller

ruby-on-rails - Rails has_many :through with conditions and building associations

ruby-on-rails - 将小数和整数相乘 ruby​​ on rails

ruby - 如何上传文本文档以及是否可以对其启用全文搜索?

ruby-on-rails - 如何设置 ActionMailer default_url_options 的 :host dynamically to the request's hostname?

ruby-on-rails - 传递对象或对象 ID?

ruby - 真正的轮胎方法的代理?

ruby-on-rails - 有没有办法在具有远程服务器域的远程服务器上以开发模式启动 Ruby on Rails

ruby-on-rails - rails 引擎 : render parent application layout

javascript - 使用 CoffeeScript 动态添加字段到 simple_form