【发布时间】:2014-02-03 13:03:59
【问题描述】:
以下代码使用 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,但我真的不需要它。某些特定文档的任何提示/链接?
【问题讨论】:
-
数组在 ruby 中不是惰性的。你的
@service对象是什么? -
雾集合是延迟加载的。请稍等。
标签: ruby arrays lazy-evaluation fog