ruby 在实例变量级别的红宝石中的观察者。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 在实例变量级别的红宝石中的观察者。相关的知识,希望对你有一定的参考价值。

module Watcher

    # Ensure compatibility.
    def self.included( mod )
        mod.extend( self )
    end

    # Declare a watcher. The block or lambda will be invoked with argumens of what the value was and now is, in that
    # order.
    def watch( sym, lambda = nil, &block )
        block ||= lambda

        # format variable name
        var = sym.to_s
        var = "@#{sym}" unless var =~ /^@/
        var = var.to_sym

        # declare the methods
        class_eval %Q{
            define_method( sym ){ instance_variable_get( var ) }
            define_method("#{sym}="){|v|
                block.call(
                    instance_variable_get( var ),
                    instance_variable_set( var, v )
                )
            }
        }
        sym
    end
    module_function :watch
end

以上是关于ruby 在实例变量级别的红宝石中的观察者。的主要内容,如果未能解决你的问题,请参考以下文章

用红宝石实例化Foo? [复制]

ruby 解析Gemfile.lock,从rubygems下载所有宝石,然后将它们上传到geminabox的本地实例

ruby 红宝石中的语法糖块

ruby 红宝石中的文本收集器

如何删除 R 中仅出现在一个变量级别且从不出现第二个变量级别的所有参与者?

使用 aws-sdk ruby​​ gem 知道自己的实例 ID