Вы можете легко использовать это понимание:
a = ['hello','world','1','2']
my_dict = {item : a[index+1] for index, item in enumerate(a) if index % 2 == 0}
Это эквивалентно циклу for ниже:
my_dict = {}
for index, item in enumerate(a):
if index % 2 == 0:
my_dict[item] = a[index+1]
Я просто узнал, что эта ошибка также происходит, если Вы случайно уезжаете на круглой скобке на Вашем вызове наблюдателя:
Event.observe(document, 'myapp:application_ready', myapp.MyClass.initApp());
вместо
Event.observe(document, 'myapp:application_ready', myapp.MyClass.initApp);
Я переключился на локальную версию prototypejs и добавил некоторую отладку в незаконном методе (createWraper), но отладка никогда не появляется перед ошибкой...
На самом деле незаконная функция, вызванная, когда ошибка происходит, является "оберткой", которую создают внутри createWrapper (но не называют там). В основном то, что происходит, - то, что Вы присоединили функцию как обработчик событий для элемента, и функция на самом деле не существует.
При попытке вставить отладочную информацию, чтобы попытаться точно определить, какая функция "не существует", затем добавляют Ваши аварийные сообщения или консольный вывод поджигателя в функции обертки между строками 3871 и 3878.