Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 13.08.2009, 12:55
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от hogart
Вот именно.


Ну, Вы получили ответ на первоначальный вопрос? Картина прояснилась?
__________________
Тонкости ECMAScript
Ответить с цитированием
  #32 (permalink)  
Старый 13.08.2009, 13:07
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Dmitry A. Soshnikov, я так и не понял, зачем вы приводите параллель между питоновским for..in и JS-ным
Ответить с цитированием
  #33 (permalink)  
Старый 13.08.2009, 13:12
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от hogart
я так и не понял, зачем вы приводите параллель между питоновским for..in и JS-ным
Для примера (как подводный камень расширения Array.prototype). В целом же, никто не может утверждать, что for ... in нельзя / "не надо" использовать для массивов - это обычная конструкция, почему нет? А что, for ... in в Питоне и for ... in в JS - это такие мега-разные вещи, что между ними нельзя проводить параллель? К тому же, это не касается первоначального вопроса. Так с первоначальным-то вопросом разобрались (простите, что спрашиваю в очередной раз)?
__________________
Тонкости ECMAScript
Ответить с цитированием
  #34 (permalink)  
Старый 13.08.2009, 13:20
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Сообщение от Dmitry A. Soshnikov
А что, for ... in в Питоне и for ... in в JS - это такие мега-разные вещи
достаточно разные, на мой взгляд.

Сообщение от Dmitry A. Soshnikov
Так с первоначальным-то вопросом разобрались (простите, что спрашиваю в очередной раз)?
Вы достаточно аргументированно и обширно высказали свое мнение, спасибо
Ответить с цитированием
  #35 (permalink)  
Старый 13.08.2009, 13:36
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от hogart
на мой взгляд.
Ну, "имхо" не возбраняется никогда

Сообщение от hogart
достаточно разные
А всё же, мне интересно, покажите, в чём?
__________________
Тонкости ECMAScript
Ответить с цитированием
  #36 (permalink)  
Старый 13.08.2009, 13:50
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Сообщение от Dmitry A. Soshnikov
А всё же, мне интересно, покажите, в чём?
в питоне for..in обходит список (или, скорее итератор). в JS for..in обходит словарь. Массив, конечно, можно назвать частным случаем словаря, но как-то не хочется.
И, чисто практическое соображение: массив в JS экономичнее обходится через старый добрый «сишный» for.
Ответить с цитированием
  #37 (permalink)  
Старый 13.08.2009, 14:09
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 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
Ага, т.к. не анализируется цепь прототипов, но это уже в сторону преимуществ, а не мега-отличий
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 13.08.2009 в 14:19.
Ответить с цитированием
  #38 (permalink)  
Старый 13.08.2009, 18:12
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Давайте не будем про JS 1.7. Если вы имеете счастье на нем писать, то я рад за вас.
Ответить с цитированием
  #39 (permalink)  
Старый 13.08.2009, 18:35
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 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 - массивы). Сейчас картина прояснилась?

Что-то осталось недопонятым?
__________________
Тонкости ECMAScript
Ответить с цитированием
  #40 (permalink)  
Старый 13.08.2009, 18:58
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Сообщение от Dmitry A. Soshnikov
В Питоне, for ... in итерирует и словари (равно, как и в JS объекты) и списки (равно, как и в JS - массивы).
Не соглашусь. В приведенном вами коде хорошо видно, что итерация идет по списку, элементами которого являются ключи словаря

Мне непонятны две вещи.
* Почему я почти не слышу других мнений, кроме вашего;
* Зачем вы меня убеждаете итерировать массив for..in'ом?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск