Vin*_*sil 4 module class crystal-lang
在Crystal中,有两种不同的方法可以实现类似的结果:
创建一个类......
class Service
def self.get
# ...
end
end
Run Code Online (Sandbox Code Playgroud)
或扩展的模块self:
module Service
extend self
def get
# ...
end
end
Run Code Online (Sandbox Code Playgroud)
两者都可以调用该方法get通过Service.get.
但是什么时候使用类或模块?Crystal的类和模块之间有什么区别?
没有太大的区别class和module类方法有关的定义.然而,它们在一个类定义可以实例化的类型(Service.new)的事实上根本不同.模块也可以有实例方法,但它们不能直接实例化,只包含在类中.
如果您只需要类方法的命名空间,则应该使用module.class对此也会很好,但传达了不同的含义.
顺便说一下:虽然你不能extend或include一个班级,但在一个模块中你可以写def self.get而不是extend.