温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ruby的module与Java的interface以及C++的friend

发布时间:2020-07-12 01:20:57 阅读:492 作者:sanqianyuejia 栏目:编程语言
C++开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

   ModuleRuby一个非常好用的功能,它跟Class类别非常相似,你可以在里面定义方法。只是你不能用new来建立它。它的第一个用途是可以当做Namespace来放一些工具方法:

module MyUtil           def self.foobar     puts "foobar"   end  end    MyUtil.foobar # 输出 foobar 

        另一个更重要的功能是Mixins,可以将一个Module混入类別之中,这样这个类別就会拥有此Module的方法。这回让我们拆成两个wenji,debug.rbfoobar.rb,然後在foobar.rb中用引用debug.rb

        首先是debug.rb:

module Debug          def who_am_i?         puts "#{self.class.name}#{self.inspect}"          end  end 

然后是foobar.rb:

require "./debug"  class Foo          include Debug # 這個動作叫做 Mixin  end    class Bar          include Debug  end  a = Foo.new  b = Bar.new  a.who_am_i? # 輸出 Foo: #<Foo:0x00000102829170>  b.who_am_i? # 輸出 Bar: #<Bar:0x00000102825b88> 

       Ruby使用Module来解決多重继承的问题,不同类别之间只要拥有相同的方法,就可以改放在Module里面,然后include它即可。

        Java中的interface可以解决多重继承的缺陷,C++是支持多重继承的,而且有一个元友的概念。我认为ruby的include module更像C++的friend class的功能。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节
推荐阅读:
  1. ruby 的while
  2. ruby的if判断

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×