大佬教程收集整理的这篇文章主要介绍了ruby – class#allocation及其用途,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Ruby的构建方式是我们不必手动分配或释放空间用于/与对象,但是我们有能力这样做.为什么?
Ruby中手动分配对象的用法是什么?我阅读的文章显示了一个自定义的初始化方法,但是它的用途如此有限?
class someClass def self.new(*a,&b) obj = allocate # initialize is a private instance method by default! obj.send(:initialize,*a,&b) end end
尽管文档说明了什么,但是分配方法的存在并不是关于内存管理那么多,而是关于在对象创建生命周期中提供更精细的粒度控制.大多数情况下,您不需要此功能,但它对某些边缘情况非常有用.
例如,在Newman邮件框架中,我将此技术用于implement a fake constructor for TestMailer对象;它实现了API兼容性的新方法,但实际上返回了一个实例,而不管它被调用了多少次:
class Newman::TestMailer def self.new(setTings) return self.instance if instance # do some Mail gem configuration stuff here self.instance = allocate end attr_accessor :instance end
除了如上所示重新定义新的内容,我还没有看到很多其他用例(尽管我想象一些奇怪的序列化的东西也使用这个功能).但是考虑到这一点,值得一提的是,Ruby始终提供这些扩展点,无论您是否需要定期使用它们.罗伯特·克莱姆(Robert KlemmE)有一篇名为The Complete Class的伟大文章,我强烈推荐阅读,如果你想看看这个设计理念在Ruby中有多远:-)
以上是大佬教程为你收集整理的ruby – class#allocation及其用途全部内容,希望文章能够帮你解决ruby – class#allocation及其用途所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。