Выражение for each и for in
Добавлено: 05 дек 2010, 00:59
Обучая ActionScript 3.0 тут натолкнулся на интересные выражения,и немогу понять по какому (правилу,методу,или чего-то еще) они работают...
Вот что говорится в моей "обучалке":
И тут как бы автор поясняет:
Вот и вопрос почему такой рандомный вывод да еще и переплетающийся Trace? И вообще возможно его сделать по порядку?
Вот что говорится в моей "обучалке":
Выражение for each..in – как упрощенное выражение for..in. В отличие от for..in, for each..in проходит по значениям объекта, а не по именам переменных объекта или ключам. Если вам не нужно знать ключи к значениям объекта во время итерации, пожалуй, вы захотите использовать выражение for each..in вместо for..in.
Код: Выделить всё
var obj:Object = new Object();obj.a = 1;obj.b = 2;obj.c = 3;obj.d = 4;obj.e = 5;obj.f = 6;obj.g = 7;obj.h = 8;obj.i = 9;obj.k = 10;for (var key:String in obj) {trace("Trace#1 : "+key); // key (a, b, c)trace("Trace#2 : "+obj[key]); // value (1, 2, 3)}for each (var value:* in obj) {trace("Trace#3 : "+value); // value without key (1, 2, 3)}Но последовательность то ууххх как хромает, и вот меня эта тема заинтересовала...При первом проходе for..in будет отслеживать как ключи (a, b,c и тд), так и значения (1, 2 и 3 и тд), в то время как for each будет отслеживать только значения (1, 2, 3 и тд) и не будет иметь способа доступа к тому, какие ключи используются для определения этих значений.
Код: Выделить всё
Trace#1 : bTrace#2 : 2Trace#1 : fTrace#2 : 6Trace#1 : cTrace#2 : 3Trace#1 : gTrace#2 : 7Trace#1 : iTrace#2 : 9Trace#1 : dTrace#2 : 4Trace#1 : hTrace#2 : 8Trace#1 : aTrace#2 : 1Trace#1 : eTrace#2 : 5Trace#1 : kTrace#2 : 10Trace#3 : 2Trace#3 : 6Trace#3 : 3Trace#3 : 7Trace#3 : 9Trace#3 : 4Trace#3 : 8Trace#3 : 1Trace#3 : 5Trace#3 : 10 Последовательность от первого "Trace":Trace#1 : bTrace#1 : fTrace#1 : cTrace#1 : gTrace#1 : iTrace#1 : dTrace#1 : hTrace#1 : aTrace#1 : eTrace#1 : k Последовательность от второго "Trace":Trace#2 : 2Trace#2 : 6Trace#2 : 3Trace#2 : 7Trace#2 : 9Trace#2 : 4Trace#2 : 8Trace#2 : 1Trace#2 : 5Trace#2 : 10 Последовательность от третьего "Trace":Trace#3 : 2Trace#3 : 6Trace#3 : 3Trace#3 : 7Trace#3 : 9Trace#3 : 4Trace#3 : 8Trace#3 : 1Trace#3 : 5Trace#3 : 10