哪些语言支持while或do / while循环使用自动迭代索引?

时间:2013-06-11 15:14:44

标签: loops for-loop language-agnostic programming-languages while-loop

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

换句话说,[while][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]循环具有很大的灵活性,但每种循环最适合某些场景。但是,它使得某些场景非常奇怪,例如将迭代器与索引器组合在一起。

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

UPDATE :我确实意识到嵌套这样的循环会产生的复杂性,但我确信这可以通过一些聪明的命名约定来规避。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

从我的记忆中,Forth中的DO ... LOOP字支持了那种。 获取当前循环索引的单词是I(显然!),而下一个外循环的单词是J

因此

10 1 DO I . 32 EMIT LOOP NL

会打印:

1 2 3 4 5 6 7 8 9 10