【发布时间】:2017-05-27 09:24:25
【问题描述】:
我对 Ruby 的语法感到惊讶,我只能用一个词来形容它:舒适。
编辑:我想我不清楚。我想要一种简单的方法来退出有条件的循环。
遗憾的是,我找不到如何在 Ruby 中执行此 Java 代码:
假设: 数组 = [1,2,3,4] 数组2 = [1,2,3,4]
boolean condition = false;
for(int i = 0; i < array.length && !condition; i++)
{
for(int j = 0; j < array2.length && !condition; j++)
{
condition = (array[i] + array2[j] + 1 == 7);
}
}
if(condition)
{
System.out.println("Two elements of the arrays + 1 sum 7")
}
我喜欢 Ruby 的 one liner……但我什至无法在完全开环的情况下做到这一点……
我正在寻找这样的东西(each_while 是编造的):
array.each_while(condition && condition2) { SomeAction }
在 Ruby 中最简单的方法是什么?
我使用的大多数循环都有退出条件来优化它们。我在网上找到的所有东西都不能被 Ruby 优美的语法所接受,因为它比 Java 还要糟糕,而且我们都知道 Java 并不漂亮。
我在网上找到的一些解决方案:
catch "BreakOuterLoop" do
for i in 1..10
print "out #{i}\n"
for j in 1..10
print "in #{j}\n"
throw "BreakOuterLoop" if i+j > 16
end
end
end
太可怕了……
【问题讨论】:
-
条件是什么?
-
array.length.times do可以轻松做,但是你想在里面插入什么条件呢? -
任何条件。例如,布尔值现在为真,因为在“SomeAction”代码中它改变了它的值。
-
这个问题恐怕有点太笼统了。请用一个具体的例子,一些数组和一些逻辑发布另一个问题。
-
我确实改变了逻辑。请检查一下。它现在特定于一个问题。