下面的代码使用fog从rackspace获取服务器列表时出现问题-我将新一代服务器与旧一代服务器连接起来。
def servers()
servers = @service.servers
servers_old = @service_old.servers
size = servers.length + servers_old.length # line 4
all_servers = servers + servers_old # line 5
servers = all_servers.sort_by { |k| k.name}
return servers
end
如果第四行被注释掉,则该方法只返回
service.servers
数组。第五行中不发生连接。在我看来,数组service.servers
和service_old.servers
在我显式请求它们之前似乎有些懒惰。对于未注释的第四行,方法返回的是连接数组,这正是我所期望的。如果这些数组是惰性的,有什么推荐的方法来计算它们吗?现在我只是在使用
length
,但我并不真正需要它。一些特定文档的任何提示/链接? 最佳答案
.all
是你的朋友。Fog
集合通常有一个all
方法,该方法可以解决您的延迟加载问题。不要使用@service.servers
,而是使用:
servers = @service.servers.all
和
servers_old = @service_old.servers.all
关于ruby - 懒数组的评估?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21528175/