for реализует перебор диапазона целых чисел.

Синтаксис

править

for <variable> in [<start>:]<stop>[:<step>]
    <statements>

Если <start> не указано, то по умолчанию 0.
Если <step> не указано, то по умолчанию оно равно 1.
Для каждой итерации <variable> получает значение, начиная с <start>, увеличивается на <step> и заканчивается, когда достигнет или превысит значение <stop> (или встретится оператор break).

Внутри блока, break оператор прерывает цикла. if оператор используется для управления, в случае прекращения цикла, либо продолжения (в противном случае было бы бессмысленно иметь дальнейшие инструкции в цикле).

эквивалент loop:

<variable> = start
while <variable> < <stop>
    ... statements..
    <variable> += <step>

где <stop> эквивалентно диапазону счетчика.

Пример

править

  for i in 1:10
     print i   # prints values 1,2,3,4,5,6,7,8,9

  for i in 1 : 10  # can have spaces around :
     print i

  for i in 5
    print i    # prints values 0,1,2,3,4

  for i in 7:5:-1
    print i    # prints values 7,6

  for e in 20:31:2
    print i    # prints even numbers between 20 and 30 inclusive

  for f in 7:5
    print f    # never executed

  for i in someList.count
    print i    # print the list indexes

Последовательности

править

for для перебора элементов любого объекта, реализующий IEnumerable.

Синтаксис

править

for <variable> in <expression>
    <statements>

Переменная variable может быть ранее объявленной переменной или ранее не существовавшей. Выражение должно наследовать System.Collections.Generic.IEnumerable<of> или System.Collections.IEnumerable. Наиболее распространенных объектов перечисления являются списки, массивы и переменные аргументы.
Если переменная variable имеет явный тип (foo as Bar), или имеет ранее объявленный тип, то тип должен быть совместим с объектом перечисления. Если нет явного типа, то тип выводится из типа перечисления. Для IEnumerable<of>, это общий тип. Для IEnumerable, вывод типа Object.
В объявлении переменной может быть присвоение.
Внутри объявления, break оператор прерывает текущий цикла пропуская оставшуюся часть цикла. if оператор используется для управления, в случае прекращения цикла, либо продолжения (в противном случае было бы бессмысленно иметь дальнейшие инструкции в цикле).

Пример

править

# Example 1
for person in people
    print person

# Example 2
i = 1
for person in people
    print '[i]. [person]'
    i += 1

# Example 3
for line as String in lines
    line = line.trim
    if line
        print line

# Example 4
for node in nodes
    if not node.isActive
        print 'skipping inactive node: [node]'
        continue
    print node
    node.process

# Example 5
found = false
for cust in customers
    if cust.name == name
        found = true
        break