Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby – class#allocation及其用途大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
阅读 http://www.seejohncode.com/2012/03/16/ruby-class-allocate/后,再看看分配方式: http://www.ruby-doc.org/core-1.9.3/Class.html#method-i-allocate我变得很好奇了.

Ruby的构建方式是我们不必手动分配或释放空间用于/与对象,但是我们有能力这样做.为什么?

Ruby中手动分配对象的用法是什么?我阅读的文章显示了一个自定义的初始化方法,但是它的用途如此有限?

解决方法

分配存在的主要原因是允许您为对象构建自定义构造函数.作为您链接的文章,您可以将someClass.new方法设想为默认情况下执行以下操作:
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,请注明来意。