【问题标题】:Ruby access 'key' of Object?Ruby 访问对象的“密钥”?
【发布时间】:2017-12-22 12:47:35
【问题描述】:

如果我有一堂课,有没有办法捕捉到钥匙访问事件?

obj = Example.new
obj['key'] # is there any way to manually handle this?

当我使用method_missing 时,我只得到'[]' 作为名称,但我没有得到'key' 关键字。我也尝试用Example < Hash 继承Hash,但obj['key'] 会简单地解析为nil

【问题讨论】:

    标签: ruby hash key


    【解决方案1】:

    其实很简单:

    class Example
      def [](key)
        p key
      end
    
      def []=(key, value)
        p [ key, value ]
      end
    end
    

    您可以对 method_missing 执行相同的操作,但如果您打算始终如一地捕获这些,那么最好定义一个方法。

    请注意,您确实会得到其他参数,但前提是您要求它们:

    def method_missing(name, *args)
      p [name, args]
    end
    

    请注意,obj['key'] 显示为 [:[], ['key']]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2021-12-25
      • 2013-01-01
      • 2019-10-10
      • 1970-01-01
      • 2014-09-12
      相关资源
      最近更新 更多