加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:24:17 所属栏目:百科 来源:网络整理
导读:我有一个类和一个哈希.如何使用密钥作为方法名称来获取散列的成员动态地成为类的方法? class User def initialize @attributes = {"sn" = "Doe","givenName" = "John"} endend 例如,我想要有以下输出Doe: u = User.newputs u.sn 解决方法 def method_missi
我有一个类和一个哈希.如何使用密钥作为方法名称来获取散列的成员动态地成为类的方法?
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的条目,它将返回该条目的值.否则它会照常进行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读