将评估赋值给变量是否更有效?

时间:2018-10-16 15:01:53

标签: ruby performance

Ruby是否记得已经评估过的结果?说我有:

s = "a b c d e"

如果我这样做了:

s.split.join[2] + s.split.join[3] # => "cd"

相反,这样做会提高效率还是降低效率?

x = s.split.join
x[2] + x[3] # => "cd"

我的想法是,如果不给变量分配s.split.join,那么每次使用该值时,Ruby都必须对s.split.join进行求值。如果s.split.join被多次调用,这似乎比仅检查单个变量的值要昂贵。

1 个答案:

答案 0 :(得分:3)

任何未设置为局部变量的内容都会重新评估,因此在您的情况下,设置局部变量会更有效。