诗歌rails 之extend的用法

include是个语法(用1.class.methods.grep /include/ 不到),而extend是个方法(所有类或实例都有,因为是是根类Object的实例方法,见api:http://www.ruby-doc.org /core/classes/Object.html#M000335),用来给当前对象加载模块里的方法作为实例方法,如果当前对象是个类,那么就是成 为类方法,如果是实例,那么就是实例方法:
Ruby代码
  1. irb(main):001:0> class C1
  2. irb(main):002:1> end
  3. => nil
  4. irb(main):003:0> module M1
  5. irb(main):004:1> def foo
  6. irb(main):005:2> puts "bar"
  7. irb(main):006:2> end
  8. irb(main):007:1> end
  9. => nil
  10. irb(main):008:0> C1.foo
  11. NoMethodError: undefined method `foo' for C1:Class
  12. from (irb):8
  13. irb(main):009:0> C1.extend M1
  14. => C1
  15. irb(main):010:0> C1.foo
  16. bar
  17. => nil
  18. irb(main):011:0> C1.new.foo
  19. NoMethodError: undefined method `foo' for #<0xb79b3f04>0xb79b3f04>
  20. from (irb):11
  21. irb(main):012:0> C1.new.extend(M1).foo
  22. bar
  23. => nil
  24. irb(main):013:0>

转载于:https://www.cnblogs.com/orez88/articles/1579711.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值