0

正如标题所暗示的那样,哪些语言支持while或do/while循环以及自动迭代索引?哪些语言支持带自动迭代索引的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]循环具有很大的灵活性,但是每种循环都最适合某些情况。尽管如此,它使某些场景非常奇怪,例如将迭代器与索引器结合在一起。

这不是一个开放式问题。简单地说,做任何语言都支持这样的结构,如果不是,嗯,也不能问,这里因为这将使其成为开放式

更新:我的确意识到了就会产生出筑巢这种环路的这种复杂性,但我肯定这可以通过一些聪明的命名约定来绕开。

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

+0

如果这个问题是不适合的SO格式,请告知应在何处问。 –

回答

1

在红宝石:array.each_index{|i| print i }将经历每个指数。

+0

谢谢@AShelly。我会阅读这个构造。现在,它看起来像C#中的lambda表达式。它是一种语言结构还是一种语言扩展?我不确定Ruby是否提供反思。 –

+0

在[初看](http://khelll.com/blog/ruby/ruby-reflection/)中,似乎至少在某种程度上支持反射。 –

+1

Ruby确实支持反射。该块(花括号中的部分)本质上是一个lambda。块是该语言的核心功能。 – AShelly

1

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

因此

10 1 DO I . 32 EMIT LOOP NL 

将打印:

1 2 3 4 5 6 7 8 9 10