【问题标题】:Ruby enumerable take first elements until condition is not metRuby 可枚举获取第一个元素,直到条件不满足
【发布时间】:2016-01-23 21:57:44
【问题描述】:

我建立了自己的类,并使其可枚举,现在我想从第一个开始尽可能多地获取元素,只要假设它们的总和不超过 10。我是倾向于take_while,但我不知道怎么写。

如果您有任何其他想法,我也愿意接受。提前致谢。

【问题讨论】:

  • 您的问题看起来像为我编写代码。到目前为止,您尝试过什么?
  • 您是否阅读了文档中take_while 的示例?
  • 是的,我不明白在满足条件后如何在块中执行其他操作,我尝试使用my_enum.take_while do |x| sum + x <= 10 sum += x end(我之前将 sum 定义为 0)

标签: ruby enumerable


【解决方案1】:

你可以这样做:

a = [1, 2, 13, 24, 5, 0]
sum = 0
a.take_while { |i| sum+=i; sum < 10  } 
#=> [1, 2]

【讨论】:

  • 非常感谢,我一直在测试,发现我可以编写一个带有ifdo..end 块,但你的解决方案看起来好多了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多