【发布时间】:2011-12-25 16:23:51
【问题描述】:
对于 Ruby Enumerable,我似乎有一个奇怪的用例。我正在尝试执行以下操作:
result = my_strategies.some_method do |strategy|
strategy.get_result
end
some_method 方法只是一个占位符,但却是本题其余部分的基础。
可枚举的 my_strategies 包含用于从远程服务检索值的有序策略列表;一个更优选的策略在一个不太优选的策略之前运行,
有时,更可取的策略会失败,仅靠重试就不会正确。在这种情况下,策略将返回 nil。
我可以通过每个块看到这样做的方法,因此:
result = nil
my_strategies.each do |strategy|
result = strategy.get_result
if not r.nil?
break
end
end
这似乎是不必要的嘈杂。我想知道在我的第一个示例中是否有可以替换 some_method 的方法;类似于 .any? 的东西,但返回导致块为真的值,而不是只返回真。
也欢迎我尝试做的其他方法。
编辑:我最初问这个问题是因为我尝试过这段代码:
result = my_strategies.find do |strategy|
strategy.get_result
end
除了这向我返回了成功的策略,而不是它成功时返回的值。我不在乎哪种策略让我获得了价值,我只想知道价值是什么。
【问题讨论】:
标签: ruby enumerable