Ruby 的include和extend用法
程序员文章站
2022-07-12 21:35:24
...
Ruby使用include和extend来对class做补充。
假设有一个module:
module Person def about_me puts "This is about me." end end
1, include <module name>
1.1 使模块的方法变成类的实例方法:
class Student include Person end student = Student.new student.about_me # puts "This is about me." Student.about_me # 没有定义此方法,抛出异常。
1.2 如何要让 Student 可以直接调用include module的方法,可以在 def self.included(c) ... end 实现,比如
module Person def about_me puts "This is about me." end def self.included(c) def c.call_me puts "This is class me" end end end
Student.call_me即可直接调用。
2, extend <module name>是直接变成类的类方法 ,相当于class << self.
参考资料: http://www.railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby
推荐阅读
-
SQL中distinct 和 row_number() over() 的区别及用法
-
对比Python中__getattr__和 __getattribute__获取属性的用法
-
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
-
linux命令之find命令的12个常用参数详解(含具体用法和注意事项)
-
SQL中DATEADD和DATEDIFF的用法示例介绍
-
python中单下划线(_)和双下划线(__)的特殊用法
-
Python中 Global和Nonlocal的用法详解
-
PHP中ini_set和ini_get函数的用法小结
-
闭包在python中的应用之translate和maketrans用法详解
-
git用法教程图文详解(git fetch和git pull的区别)