|
|
|
|||||
Регистрация: Feb 2008
Сообщений: 890
|
Быдлокод?
Полный пример:
var xml:XML = <LOCATIONS> <LOCATION ID = "1" STATUS = "OPEN" /> <LOCATION ID = "2" STATUS = "CLOSE" /> <LOCATION ID = "3" STATUS = "OPEN" /> <LOCATION ID = "4" STATUS = "CLOSE" /> <LOCATION ID = "5" STATUS = "OPEN" /> </LOCATIONS>; var openLocationsID:Vector.<uint> = new Vector.<uint>(); xml.*.(@STATUS == "OPEN" && openLocationsID.push(@ID)); trace(openLocationsID); //################################# //Output: 1,3,5 - быдлокод?)))
__________________
скриптограф |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
- нет.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Feb 2008
Сообщений: 890
|
обоснуйте свою точку зрения, пожалуйста))
С одной стороны выборка и занесение в вектор происходит за один проход без дальнейшей пробежки по XMLList-у с целью закладки результатов фильтрации в вектор, что благоприятно влияет на производительность, но с другой стороны код тяжелочитаем и на первый взгляд не очевиден, да и вообще как-то через костыли получилось)))
__________________
скриптограф |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
e4x фильтр это называется, а не костыли)
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Feb 2008
Сообщений: 890
|
Костыли в том смысле, что у нас есть выражение @STATUS == "OPEN", по которому производится фильтрация в фильтрующем операторе "()".
К этому выражению добавляется вызов ф-ии, которая никоим боком не относится к фильтрации и возвращаемый ею результат тоже не имеет отношения к фильтрации. Более того, добавляется этот вызов с помощью "логического И", что должно под собой подразумевать фильтрационную осмысленность происходящего, а вот нет... Т.е. с точки зрения здравого смысла и логики - это полнейший маразм и совершеннейший быдлокод, но зато в один проход и одну строчку))) Добавлено через 6 минут Цитата:
Добавлено через 10 минут Хотя вы наверно имеете в виду его привязку к именам, а не к структурному скелету, про которую я подумал)))
__________________
скриптограф |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Я вообще считаю e4x очень быдлокодным в принципе, но он сокращает запись и в чём-то удобен - остаётся только привыкнуть).
Минус его в абсолютной неООПности, т.к. выражения очень зависят от структуры конкретного XML. А RegExp вообще брэйнфак, но бывает очень нужен.
__________________
Отряд Котовскага |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Если с проверками, то так
var xml:XML = <LOCATIONS> <LOCATION ID = "1" STATUS = "OPEN" /> <LOCATION ID = "2" STATUS = "CLOSE" /> <LOCATION STATUS = "OPEN" /> <LOCATION ID = "4" STATUS = "CLOSE" /> <LOCATION ID = "5" STATUS = "OPEN" /> <LOCATION ID = "6" /> </LOCATIONS>; var openLocationsID:Vector.<uint> = new Vector.<uint>(); xml.*.(hasOwnProperty ("@ID") && hasOwnProperty ("@STATUS") && @STATUS == "OPEN" && openLocationsID.push(@ID)); trace (openLocationsID); |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Цитата:
|
|
|||||
Цитата:
Кроме того такая запись подразумевает, что статусов может быть больше двух, а значит в коде может быть существует такая строчка и, соответственно, подобные для каждого статуса. Может быть я конечно переборщил с телепатией, но в целом это кажется признаком не очень хорошего стиля. |
Часовой пояс GMT +4, время: 22:18. |
|
« Предыдущая тема | Следующая тема » |
|
|