2016-04-17 8 views

Antwort

1

Die Iteration Operator :: in einem Ausdruck enthält, erlaubt die Erklärung auf seinen zwei Operanden mehrfach (an Iteration Ausdruck genannt) ausgeführt wird, zu beruhen, die die integralen Grenzen für die Ausführung bereitzustellen. Es verhält sich so, als würde eine Schleife um die Anweisung konstruiert. Zum Beispiel haben die folgenden beiden Funktionen identisch Semantik:

void foo1() { print(1::5); } 
void foo2() { print(1); print(2); print(3); print(4); } 

Die Operanden für :: werden vor der Schleife ausgewertet, als ob

void foo3() { 
    int counter = 1; 
    int end = 5; 
    for (; counter < end; ++counter) 
     print(counter); 
} 

Hinweis, dass es auch möglich ist, den Zählerwert zu speichern, einige Variable bei jeder Schleifeniteration, sind beispielsweise die beiden folgenden Funktionen semantisch äquivalent:

void bar1() { 
    int i; 
    printTwoNumbers(i = 1::5, i); 
} 
void bar2() { 
    printTwoNumbers(1, 1); 
    printTwoNumbers(2, 2); 
    printTwoNumbers(3, 3); 
    printTwoNumbers(4, 4); 
} 

Diese für saubere Tricks verwendet werden kann, wie

int i; 
pInt[i = 0::100] = i; 

zu initialisieren ganzen Zahlen bei pInt[0], pInt[1], pInt[2], ..., pInt[99]-0, 1, 2, ..., 99.

Siehe die Alef Language Reference Manual (PDF) als Referenz. Das Handbuch liefert auch zwei saubere Beispiele zum Kopieren von Strings (d. H. strcpy), die den Iterationsoperator verwenden.