下面的代码使用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.serversservice_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/

10-09 00:30