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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.08.2013, 17:37
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 21  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Т.е. в каких-то языках goto работает как call и сохраняет адрес возврата?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Нет, само по себе понятие "адрес возврата" специфично для языков с одним стеком / похожим на Си.
Например в Lisp, Matlab, ML и stackless Python такое понятие применимо только отчасти. В языке типа Forth, Postscript - вообще не применимо.
__________________
Hell is the possibility of sanity

Старый 19.08.2013, 21:58
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 23  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Я перефразирую. Т.е. в каких-то языках goto синоним yield?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Нет, yield - это частный случай со-процедуры "только в одну сторону", относится к goto так же, как if относится к goto. Т.е. его можно реализовать с помощью.

Т.е. чтобы реализовать yield нужно сделать дополнительные операции, нужно 1. сохранить состояние вызывающей процедуры, 2. восстановить состояние вызваной процедуры, 3. выполнить код до следующего yield, 4. восстановить состояние вызывающей процедуры заполнив необходимые значения только что вычисленными. goto - только инструмент для манипуляции / осуществления переходов, но вообще кода для реализации yield нужно больше.
__________________
Hell is the possibility of sanity

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

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Наткнулся на вопросы про выход из вложенных циклов на stackoverflow, похоже в бородатые годы AS3 умела делать метки для выхода по break;

Сейчас компилятор почему-то ругается и говорит что это не православно

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Покажите код, на который ругается.
__________________
Reality.getBounds(this);

Старый 23.08.2013, 17:25
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 27  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Пока копировал, понял ошибку
Не совсем интуитивно понятен принцип работы, ибо метка похоже должна ставиться перед самим циклом, а не после него. (Мне казалось что либо он начнет новую итерацию либо весь цикл заново)
Как сделал я:
Код AS3:
for (var i: int = 0; i < numChildren; i++) {
    for (var j: int = 0; j < numChildren; j++) {
        if (somethingHappened(i, j)) 
		{
			break OuterLoop;
        }
    }
}
OuterLoop: trace("out of the loop");
Как надо:
Код AS3:
OuterLoop: for (var i: int = 0; i < numChildren; i++) {
    for (var j: int = 0; j < numChildren; j++) {
        if (somethingHappened(i, j)) 
		{
			break OuterLoop;
        }
    }
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Да. Я же в этой же теме пример приводил)) break работает и просто для маркированных блоков кода, а continue только для циклов.
Метка это не точка, куда надо перейти. Это название блока, который будет прерван break (осуществлен выход из блока) или продолжен continue (начата новая итерация цикла).
__________________
Reality.getBounds(this);

Старый 23.08.2013, 17:32
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 29  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Опять пропустил значит, спасибо)

Старый 24.08.2013, 00:02
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 30  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А с goto, который в определенных языках ведет себя как не goto и не call и не yield мне кто-нибудь расскажет? Или мне можно послать все знания о goto в далекое прошлое? А есть в каких-нибудь языках goto как обычный goto? Который просто кладет в счетчик команд адрес следующей инструкции.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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