13.08.2009, 12:55
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от hogart
|
Вот именно.
|
Ну, Вы получили ответ на первоначальный вопрос? Картина прояснилась?
|
|
13.08.2009, 13:07
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
Dmitry A. Soshnikov, я так и не понял, зачем вы приводите параллель между питоновским for..in и JS-ным
|
|
13.08.2009, 13:12
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от hogart
|
я так и не понял, зачем вы приводите параллель между питоновским for..in и JS-ным
|
Для примера (как подводный камень расширения Array.prototype). В целом же, никто не может утверждать, что for ... in нельзя / "не надо" использовать для массивов - это обычная конструкция, почему нет? А что, for ... in в Питоне и for ... in в JS - это такие мега-разные вещи, что между ними нельзя проводить параллель? К тому же, это не касается первоначального вопроса. Так с первоначальным-то вопросом разобрались (простите, что спрашиваю в очередной раз)?
|
|
13.08.2009, 13:20
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
Сообщение от Dmitry A. Soshnikov
|
А что, for ... in в Питоне и for ... in в JS - это такие мега-разные вещи
|
достаточно разные, на мой взгляд.
Сообщение от Dmitry A. Soshnikov
|
Так с первоначальным-то вопросом разобрались (простите, что спрашиваю в очередной раз)?
|
Вы достаточно аргументированно и обширно высказали свое мнение, спасибо
|
|
13.08.2009, 13:36
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от hogart
|
на мой взгляд.
|
Ну, "имхо" не возбраняется никогда
Сообщение от hogart
|
достаточно разные
|
А всё же, мне интересно, покажите, в чём?
|
|
13.08.2009, 13:50
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
Сообщение от Dmitry A. Soshnikov
|
А всё же, мне интересно, покажите, в чём?
|
в питоне for..in обходит список (или, скорее итератор ). в JS for..in обходит словарь. Массив, конечно, можно назвать частным случаем словаря, но как-то не хочется.
И, чисто практическое соображение: массив в JS экономичнее обходится через старый добрый «сишный» for.
|
|
13.08.2009, 14:09
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от hogart
|
в питоне for..in обходит список (или, скорее итератор). в JS for..in обходит словарь
|
Python:
for (key, value) in {'a': 1, 'b': 2}.items():
print(key, value) # a 1, b 2
for key in {'a': 1, 'b': 2}:
print(key); # a, b
JS (1.7):
for (var [key, value] in {a: 1, b: 2}) {
alert([key, value]); // a,1 ; b,2
}
for (var key in {a: 1, b: 2}) {
alert(key); // a; b
}
for / for each ... in равно так же может обходить и массив, не только объект (см., опять же, array comprehensions).
var a = [1, 2];
for (var key in a) {
alert([key, a[key]]); // 0,1; 1,2
}
Сообщение от hogart
|
И, чисто практическое соображение: массив в JS экономичнее обходится через старый добрый «сишный» for
|
Ага, т.к. не анализируется цепь прототипов, но это уже в сторону преимуществ, а не мега-отличий
Последний раз редактировалось Dmitry A. Soshnikov, 13.08.2009 в 14:19.
|
|
13.08.2009, 18:12
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
Давайте не будем про JS 1.7. Если вы имеете счастье на нем писать, то я рад за вас.
|
|
13.08.2009, 18:35
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от hogart
|
Давайте не будем про JS 1.7
|
Давайте.
JS (1.5)
for (var key in {a: 1, b: 2}) {
alert(key); // a; b
}
Python:
for key in {'a': 1, 'b': 2}:
print(key); # a, b
Вы правильно трактуйте подачу, а не неадекватно Расслабьтесь, это всего лишь форум.
В Питоне, for ... in итерирует и словари (равно, как и в JS объекты) и списки (равно, как и в JS - массивы). Сейчас картина прояснилась?
Что-то осталось недопонятым?
|
|
13.08.2009, 18:58
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
Сообщение от Dmitry A. Soshnikov
|
В Питоне, for ... in итерирует и словари (равно, как и в JS объекты) и списки (равно, как и в JS - массивы).
|
Не соглашусь. В приведенном вами коде хорошо видно, что итерация идет по списку, элементами которого являются ключи словаря
Мне непонятны две вещи.
* Почему я почти не слышу других мнений, кроме вашего;
* Зачем вы меня убеждаете итерировать массив for..in'ом?
|
|
|
|