Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.03.2013, 12:54
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
For each сохраняет порядок для массива и вектора.
Поэтому использую его для обхода всегда, если не нужно знать индекс элемента.
Естественно, сохраняет.

Вот этого варианта нагляднее и проще обычный for (а не for in/while):

Код AS3:
var array:Array = [ 1, 23, 4, 54, 3, 1, 55 ];
for(var i:int = 2; i < 4; i++) array[i] = i*333;

Старый 11.03.2013, 14:15
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Поэтому вы можете часто встретить мнение, что вместо цикла лучше использовать функции высшего порядка, такие как например find-if, flatten, transpose и т.п. - потому, что эти функции - абстракции уже содержащие в себе итерационный примитив + надстройку обеспечивающую дополнительные возможности.
Угу, хорошо, ...для С#, Ocaml, F#. Но никак не для ActionScript3, потому что:
- нет типизации функций,
- вызов функции непростительно дорог.
В сортировке только используется и то только потому, что копипастить алгоритм сортировки слишком дико. Но в особо критических местах именно не быстрый вызов функции заставляет делать свою реализацию сортировки.
В as3 я использовал функции высших порядков только для выбора наиболее подходящих значений/вариантов/объектов по критериям. Критерии были как раз функциями, передававшимися в алгоритм выборки. Но это использовалось только в AI, туториале. В основной логике такого не было - дорого потому что и не типизировано.

Да даже и в C# как-то стремно эти штуки использовать, мало ли как на производительности скажется, только когда без них код слишком страшным становится.

Цитата:
Сообщение от mikhailk Посмотреть сообщение
Вот этого варианта нагляднее и проще обычный for (а не for in/while):
Код AS3:
var array:Array = [ 1, 23, 4, 54, 3, 1, 55 ];
for(var i:int = 2; i < 4; i++) array[i] = i*333;
Да, логично, Вы здесь индекс используете внутри цикла и было бы слегка странно гнать foreach-ем и итерировать внутри цикла i++ одновременно, сравнивать i и вызывать break.

Старый 11.03.2013, 20:24
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от expl Посмотреть сообщение
Угу, хорошо, ...для С#, Ocaml, F#. Но никак не для ActionScript3, потому что:
- нет типизации функций,
- вызов функции непростительно дорог.
В сортировке только используется и то только потому, что копипастить алгоритм сортировки слишком дико. Но в особо критических местах именно не быстрый вызов функции заставляет делать свою реализацию сортировки.
В as3 я использовал функции высших порядков только для выбора наиболее подходящих значений/вариантов/объектов по критериям. Критерии были как раз функциями, передававшимися в алгоритм выборки. Но это использовалось только в AI, туториале. В основной логике такого не было - дорого потому что и не типизировано.

Да даже и в C# как-то стремно эти штуки использовать, мало ли как на производительности скажется, только когда без них код слишком страшным становится.
В AS3 пишется куча скучного ГУЙ-кода, в котором совершенно не нужно врукопашную что-то оптимизировать. Даже любая игра большей частью состоит из ГУЙ-кода, и только небольшая часть посвящается сложным вычислениям.
Ну и вот сейчас же пишут оптимизирующий компилятор.
Ну и вообще, нужно же и по-сторонам смотреть. Даже если сейчас технически нет возможности сделать так, как нужно / хочется в AS3, это не значит, что такой возможности никогда не будет. Может кто-то соберется и сделает, а может Адоби разродится, а может человек переквалифицируется.
Кстати, по поводу функций высших порядков - я думаю, Страуструп еще об этом говорил.
__________________
Hell is the possibility of sanity

Старый 11.03.2013, 14:26
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Что вообще за пустотелый бред - мерить профессионализм циклами? это знатное трололо !!!

А вот какой из этих 2х примеров профессиональнее??! )))

Код AS3:
private var count:int = 0;
.................................
if(count) trace("hello");
 
или
................................
if(count > 0) trace ("hello");
???
__________________
Марк Tween

Старый 11.03.2013, 17:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от in4core Посмотреть сообщение
Что вообще за пустотелый бред - мерить профессионализм циклами? это знатное трололо !!!

А вот какой из этих 2х примеров профессиональнее??! )))

Код AS3:
private var count:int = 0;
.................................
if(count) trace("hello");
 
или
................................
if(count > 0) trace ("hello");
???
Профессиональнее «if (».

Старый 11.03.2013, 14:43
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
А вот какой из этих 2х примеров профессиональнее??! )))
Второй?

Старый 11.03.2013, 15:57
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 7  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Зачем применительно к скриптовому языку обсуждают способы выиграть несколько команд процессора? По-моему, куда важнее читабельность кода. И for, по-моему, в этом смысле лучше подходит почти во всех случаях.

P.S.: Я могу ошибаться, но мой опыт работы с С++ подсказывает, что while (i--) стоит делать чуть чаще чем никогда (так же как использовать побитные команды для оптимизации всяких умножений и округлений). По-моему, не стоит, опираться на особенности представления числа в памяти при работе с ним. Представление может поменяться, может поменяться разрядность числа (опять-таки, вполне вероятно, что для скриптовых языков это не так актуально и я ошибаюсь, если что - поправте меня).
Плюс формально не логично - использовать число в качестве флага. Тут хоть декримент стоит и видно, что это число. А если бы было что-то вроде while(i) - вообще беда и путаница для программиста, читающего код.

Цитата:
А вот какой из этих 2х примеров профессиональнее??! )))
P.P.S.: Да, второй.

Старый 11.03.2013, 16:12
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
А я угадаю эту мелодию с двух нот. )
Цитата:
P.P.S.: Да, второй.
Откуда такой однозначный вывод?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 11.03.2013, 16:13
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Второй да, ну хоть объяснили бы почему)))

По сабжу, я вообще, например, не использую while - тут кто к чему привык, кому как удобно. с for - код читабельнее это 100%, скорости почти одинаковы. Так что, профессиональнее там - где читать удобно и понятно
__________________
Марк Tween

Старый 11.03.2013, 16:14
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
in4core, Вы сами-то заметили, что у Вас условия разные?
Первое выдаст трейс, если count=-1, а второе — нет.
Это ответ на вопрос "почему второй", если такой возникнет. Потому что так вероятность ошибки "не учёл" практически исключена.
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:57.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.