wiz*_*tjh 1 ruby ruby-on-rails
我知道它是命名空间的东西......任何人都可以给我一些示例代码......我用示例代码快速理解事物......谢谢!
ruby中的模块可用于3种可能的事情
这很简单.
module Foo
class Bar
end
end
f = Foo::Bar.new
Run Code Online (Sandbox Code Playgroud)
有时候,你会有一些不适合任何课程的功能.在类似java的东西中,你只需将它们作为一组静态方法放在类上.在ruby中,你会将它们放在一个模块上,因为将它们放在一个类上意味着该类是为了实现的
module FooHelper
def self.bar
puts 'hi'
end
end
FooHelper.bar # => hi
Run Code Online (Sandbox Code Playgroud)
这是最难理解的所有3.基本上,它是对C中的多重继承或java中的接口的回答.
有时你有逻辑属于几个类,但同时不适合作为父类.mixin描述了将模块方法"混合"到一个类中.实际上还有更多,但在极高的水平,它看起来像这样
module CanFoo
def foo
puts 'bar'
end
end
class Baz
include CanFoo
end
class Bar
include CanFoo
end
baz.new.foo # => bar
bar.new.foo # => bar
Run Code Online (Sandbox Code Playgroud)
mixins是一个相当高级的主题,它需要一些时间来理解你何时使用超级类.IMO它们是ruby最酷的功能之一,它处理多重继承问题,比我所看到的任何其他OO语言更优雅.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |