0

正如标题所示,哪些语言支持带有自动迭代索引的 while 或 do/while 循环?

换句话说,一个[while]or[do/while]循环自动提供迭代索引,而不必求助于诸如[for]循环之类的固有索引结构。这对谷歌来说是一个奇怪的问题,它从上下文中提取了结果。

下面以 C# 为例:

int count = 0;
while (count < 10)
{
    Console.WriteLine("This is iteration #{0}", count++);
}

与以下虚构循环相反:

while<int> (value < 10)
{
    Console.WriteLine("This is iteration #{0}", value); // Or value-- for that matter.
}

我对语言设计和这个问题不太了解。循环具有很大的[for]灵活性,但每种循环都最适合某些场景。尽管如此,它还是让某些场景非常奇怪,例如将迭代器与索引器结合起来。

这并不是一个开放式的问题。简单地说,是否有任何语言支持这样的结构,如果不支持,嗯,不能在这里问,因为那样会使其开放式

更新:我确实意识到嵌套此类循环会产生复杂性,但我确信可以通过一些巧妙的命名约定来规避它。

例如,在 C# 的情况下,我想到但没有提到的是使用巧妙的 lambda 表达式。这不会是对语言的补充,而只是一个扩展(我认为这仅对反射友好的平台有效,例如 .NET 和 Java)。

4

2 回答 2

1

在 ruby​​:array.each_index{|i| print i }中会遍历每个索引。

于 2013-06-11T15:20:18.847 回答
1

根据我的记忆,Forth 中的DO...LOOP词支持了这种情况。获取当前循环索引的单词是I(显然!),下一个外部循环的索引是J.

因此

10 1 DO I . 32 EMIT LOOP NL

会打印:

1 2 3 4 5 6 7 8 9 10 
于 2013-06-13T12:02:48.597 回答