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的条目,它将返回该条目的值.否则它会照常进行.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...