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

前端之家收集整理的这篇文章主要介绍了ruby – 如何使用散列键作为类上的方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个类和一个哈希.如何使用密钥作为方法名称获取散列的成员动态地成为类的方法
class User
  def initialize
    @attributes = {"sn" => "Doe","givenName" => "John"}
  end
end

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

u = User.new
puts u.sn
@H_403_8@

解决方法

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

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

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

@H_403_8@ @H_403_8@

猜你在找的Ruby相关文章