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
被多次调用,这似乎比仅检查单个变量的值要昂贵。
答案 0 :(得分:3)
任何未设置为局部变量的内容都会重新评估,因此在您的情况下,设置局部变量会更有效。