ruby 中有each_if 吗?

发布于 2024-10-20 07:30:41 字数 199 浏览 4 评论 0原文

假设我在 Ruby 中每个循环都有这个。

@list.each { |i|
  puts i

  if i > 10
    break
  end
}

我想循环遍历列表直到满足条件。

这让我觉得“un Ruby'ish”,而且由于我是 Ruby 新手,有没有 Ruby 方法可以做到这一点?

Let's say I have this each loop in Ruby.

@list.each { |i|
  puts i

  if i > 10
    break
  end
}

Where I want to loop through the list until a condition is met.

This stung me as "un Ruby'ish" and since I'm new to Ruby, is there a Ruby way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

终难遇 2024-10-27 07:30:41

您可以使用 Enumerable#detectEnumerable#take_while,具体取决于关于你想要的结果。

@list.detect { |i|
  puts i
  i > 10
} # Returns the first element greater than 10, or nil.

正如其他人所指出的,更好的风格是首先进行子选择,然后对其采取行动,例如:

@list.take_while{ |i| i <= 10 }.each{|i| puts i}

You can use Enumerable#detect or Enumerable#take_while, depending on the result you want.

@list.detect { |i|
  puts i
  i > 10
} # Returns the first element greater than 10, or nil.

As others have noted, a better style would be to first make your sub-selection and then act on it, e.g.:

@list.take_while{ |i| i <= 10 }.each{|i| puts i}
苯莒 2024-10-27 07:30:41

您可以使用 take_while:

@list.take_while { |i| i <= 11 }.each { |i| puts i }

You could use take_while:

@list.take_while { |i| i <= 11 }.each { |i| puts i }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文