2
在构造函数中,经常发生想要将参数变为实例变量的情况。一个天真的方式做到这一点是:在构造函数中使用splat运算符有效吗?
class A
def initialize a, b, c
@a, @b, @c = a, b, c
end
end
,但更简单的方法是:
class A
def initialize *args
@a, @b, @c = args
end
end
但我关心的代码的速度,因为它看起来像后者的代码创建一个额外的数组args
这是不是在前代码中创建的。从速度或效率的角度来看,坚持前者还是后者更好,还是没有区别?
Ruby是很慢,足以额外的阵列应该不会太大的关系。 *鸭子* – 2012-02-15 22:44:02
不是一个真正的答案,但我会建议编写一个测试程序,使用每个构造函数定义实例化数千个对象。比较每次完成的时间将产生两个实现中更快的时间。 – ardnew 2012-02-15 22:46:00
我知道你特别关心速度,但鉴于第二个片段丢弃了重要的信息(方法的论点),很难看出为什么会这样写... – tokland 2012-02-15 23:11:17