ruby:can模块可以自动执行初始化代码吗?
发布时间:2020-12-17 04:22:19 所属栏目:百科 来源:网络整理
导读:我在一个模块中放了一些功能,由一个对象扩展.我希望在扩展模块时自动执行功能.但是,它必须在实例的上下文中执行,而不是在Module中执行. module X extend self @array = [1,2,3]endobj.extend(X) 目前,@ array未在实例中创建.我不想强迫开发人员调用一些初始
我在一个模块中放了一些功能,由一个对象扩展.我希望在扩展模块时自动执行功能.但是,它必须在实例的上下文中执行,而不是在Module中执行.
module X extend self @array = [1,2,3] end obj.extend(X) 目前,@ array未在实例中创建.我不想强迫开发人员调用一些初始化方法,因为每个模块他都需要知道要调用的唯一方法的名称.这可能吗 ? 解决方法
您可以在扩展和
BasicObject#instance_exec(或
BasicObject#instance_eval)上使用
Module#extended钩子执行代码,以便在扩展对象的上下文中执行任意代码:
module X def self.extended(obj) obj.instance_exec { @array = [1,3] } end end class O attr_reader :array end obj = O.new obj.array # => nil obj.extend(X) obj.array # => [1,3] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- arcgis Flex api 渲染常用整理
- recycleView简单用法
- PostgreSQL数据库创建、删除方法
- ruby-on-rails – 更改Active_Admin资源的URL |如何iverwri
- c# – 仅在实体框架核心中包含相关实体的Id
- ruby – 解析歌曲/用户URL时出现Soundcloud API 401错误
- ruby-on-rails – 我在哪里放置Act-as-taggable-on的配置?
- 模块 – 如何强制npm 3安装嵌套依赖关系?
- xml – 有没有办法从命令行向Maven POM添加依赖项?
- ruby-on-rails – Ruby-Proper使用Date.step()方法