【发布时间】:2012-03-07 08:07:12
【问题描述】:
在构造函数中,您经常希望将参数转换为实例变量。一种天真的方法是:
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,而前一个代码中没有创建这个数组。从速度或效率的角度来看,是坚持前者而不使用后者更好,还是没有区别?
【问题讨论】:
-
不是一个真正的答案,但我建议编写一个测试程序,使用每个构造函数定义实例化数千个对象。比较每个完成的时间将产生两个实现中的更快。
-
我知道你特别关心速度,但鉴于第二个 sn-p 丢弃了重要信息(方法的参数),很难理解为什么要这样写。 .
标签: ruby constructor ruby-1.9.3 splat