Kenshi
offline
Опыт:
1,101Активность: |
Выход из триггера
Нужна нейтив функция для выхода из работы триггера во время его выполнения, то есть например внутри триггера стоит условие, если оно верно или ложно, то триггер прекращает этот поток, но в дальнейшем работает. |
05.11.2008, 16:04 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Лось
offline
Опыт:
7,223Активность: |
Оператор возврата из ф-ии return. |
05.11.2008, 16:08 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kenshi
offline
Опыт:
1,101Активность: |
А что за функция? |
05.11.2008, 16:23 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
это не функция просто
Код:
пишешь где надо выйти и наверно Цитата:
|
|
05.11.2008, 16:27 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kenshi
offline
Опыт:
1,101Активность: |
она выходит также из if then endif, так что ее нельзя применить в моем случае |
05.11.2008, 16:34 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
42,879Активность: |
Kenshi
Ну дак ты в этом if'е и напиши все необходимые условия выхода из него. |
05.11.2008, 16:47 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kenshi
offline
Опыт:
1,101Активность: |
Если я внутри Ифа напишу return то он выйдет не из процедуры а из этого ифа, а мне надо из процедуры |
05.11.2008, 21:32 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
он выйдет из функции. Причем return надо если она ничо не возвращает, иначе return <тип> =)
//в последнем не уверен ScorpioT1000 добавил: пример Код:
Отредактировано ScorpioT1000, 05.11.2008 в 22:09. |
05.11.2008, 21:39 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Van Damm
wait... what?
offline
Опыт:
22,268Активность: |
return в качестве выхода из цикла в JASS не используется. он всегда является точкой выхода из текущей функции (даже если она ничего не возвращает, что и есть процедура ^^) |
05.11.2008, 22:02 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
42,879Активность: |
Kenshi
Ну я же сказал уже. Ты вбивай нужное условие (из-за которого должен прекратиться цикл) в exitwhen. Пример: Код:
Отредактировано ShadoW DaemoN, 17.11.2008 в 10:47. |
05.11.2008, 22:06 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elemental
Element Of Water
offline
Опыт:
1,072Активность: |
А другого способа (наподобии ретерна) для выхода из циклов нет? А то не всегда ведь удобно дополнительное условие забивать.. А ретерн не всегда уместен.. |
17.11.2008, 10:07 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
42,879Активность: |
Ну можно ещё принудительно сделать какое-то условия выхода. Например если цикл со счетчиком до 10-ти, то по необходимости сразу установить 10 и цикл завершиться. Только не знаю, зачем все эти извращения, проще сразу все условия выхода написать. |
17.11.2008, 10:38 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
I.Todd
offline
Опыт:
12,046Активность: |
Elemental, ты break имеешь ввиду, ты считаешь он уместнее чем return?
Учись не пользоваться Breakом... ничем хорошим это не закончится. У нас в Универе, при использовании Break задачу не засчитывали, не смотря на то, что она выполняла все необходимые действия. И это было 10 лет назад... а Сейчас вообще НУЖНО забыть о преждевременных выходов из условий и циклов. |
17.11.2008, 10:39 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Это делается примерно так:
Код:
Однако в данном случае разумнее будет написать все в exitwhen. I.Todd, все бы хорошо, только вот нету в джассе операции break как таковой. =) |
17.11.2008, 10:46 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Цитата:
факты есть? нет. я не вижу пока отличия между лишней проверкой на bool в цикле и брейком |
|
17.11.2008, 23:08 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dk
offline
Опыт:
60,293Активность: |
Если юзать break как некий аналог goto, только для цикла, то это не гуд... Как известно goto - говнокоддинг. Пример:
Код:
Вот подобное его "использование" явно не гуд... dk добавил: Пример конечно жосткий, но всеж... |
18.11.2008, 13:38 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
пример действителдьно жоский)
многое делается ифом Код:
ADOLF добавил: в циклах, в которых предусмотрена специальная инчструкция выхода из него (тот же while) надо использовать именно ее а вообще лично я понял настоящую сущность циклов только когда осилил асм) |
18.11.2008, 14:56 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elemental
Element Of Water
offline
Опыт:
1,072Активность: |
И.Тодд, ты категорически не прав заявляя, что нужно забыть о преждевременном выходе из цикла-на форуме масса информации о том, как оптимизировать код, устранять утечки-нафиг надо засорять память циклом, который будет срабатывать еще раз сто,вместо того чтобы уже например на 5 шаге выйти из него, тем самым разгружая проц компа?
В Си++ есть оператор перебора (так вроде, если не ошибаюсь) - switch - на jass есть что то подобное? |
19.11.2008, 11:45 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
|
|
19.11.2008, 12:01 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
перечитал пост пару раз. вроде написанно умными словами, но... хотя тодд тоже сказал непонячтно что) я напомню, что exitwhen может стоять в цикле в нескольких местах, и что также в него может быть помещенно более сложное условие, к примеру не только равенство переменной опред. числу, но и еще что угодно Цитата:
как ни прискорбно, но всех кого я знал рассказывали, что у них в универе преподы по проганью редкие идиоты... ADOLF добавил: Цитата:
хотя брек - это безусловный переход, jmp *label* по нашему) конечно если есть еще какой либо условие (if к примеру) то мы уже получаем два прыжка, это явно нетру ADOLF добавил: Цитата:
Код:
|
||||
19.11.2008, 13:46 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|