微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby – 如何使用散列键作为类上的方法?

我有一个类和一个哈希.如何使用密钥作为方法名称获取散列的成员动态地成为类的方法
class User
  def initialize
    @attributes = {"sn" => "Doe","givenname" => "John"}
  end
end

例如,我想要有以下输出Doe:

u = User.new
puts u.sn

解决方法

def method_missing(name,*args,&blk)
  if args.empty? && blk.nil? && @attributes.has_key?(name)
    @attributes[name]
  else
    super
  end
end

说明:如果调用不存在的方法,那么将以方法名称作为第一个参数调用method_missing,然后调用给定方法的参数,如果给出了方法.

在上面我们说如果没有定义的方法调用没有参数而没有块,并且哈希具有方法名称为key的条目,它将返回该条目的值.否则它会照常进行.

原文地址:https://www.jb51.cc/ruby/273315.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐