Перейти к содержанию

Можно ли ставить несколько else на один if


  

5 проголосовавших

  1. 1. Сколько else возможно на один if

    • Одно
      0
    • Примерно столько, сколько и вкладываемых ифов
      1
    • Что за бред? Для одного ифа одно элсе
      4


Рекомендуемые сообщения

Спор с _aL_ про скрипты.

 

  Показать контент

 

 

(Ол)

"В общем что то насчет примеров тяжело пошло. Ну ладно. Это был пример нескольких елсов, зачем было раздувать его так? Спроси у кого угодно, сколько на один иф можно елсов делать!

Насчет плагинов... Только ты не учел, что скрипты нужно ТВОИ на ВСЕХ повесить! причем один и тот же ТВОЙ скрипт на всех. Вот и проверь! "

Вот и причина переноса разборки. Основной вопрос: возможно ли более одного else на один if?

 

Вывод:

Использование нескольких элсе на один иф выглядит криво. Логике это противоречит и в компилируемых языках такой финт не прокатит. Почему:

Элсе обратно ифу. Если в ифе стоит условие: это должно быть больше, то в элсе наоборот: это должно быть меньше.

 

  Показать контент

 

Изменено пользователем Муурн Шепард
Ссылка на комментарий
Поделиться на другие сайты

Вообще, насколько я знаю, в ТЕСКС3 на 1 иф 1 элс. Соответственно, все условия должны иметь и то, и другое, по 1 комплекту на каждый результат.
Ссылка на комментарий
Поделиться на другие сайты

Я могу сказать, что забыл return в конце своих скриптов и все.

 

  В 5/7/2011 в 1:40 PM, Phoenix_Neko сказал:

Вообще, насколько я знаю, в ТЕСКС3 на 1 иф 1 элс. Соответственно, все условия должны иметь и то, и другое, по 1 комплекту на каждый результат.

 

Необязательно, можно несколько else'в делать, блин если не верите пересмотрите скрипты ежа (имени Скального Наездника).

Изменено пользователем Fr0st Ph0en!x
Ссылка на комментарий
Поделиться на другие сайты

  Цитата
Необязательно, можно несколько else'в делать, блин если не верите пересмотрите скрипты ежа (имени Скального Наездника).

Надеюсь, вы не перепутали с elseif.

 

P.S. Качать лень, но else всегда один вариант на иф. Потому много раз else ничего не дадут.

 

  Показать контент

 

Изменено пользователем Муурн Шепард
Ссылка на комментарий
Поделиться на другие сайты

Да ну как не дадут?? Если условие одного else не было выполнено, то будет компилятор искать следующий else, если он есть!
Ссылка на комментарий
Поделиться на другие сайты

  Цитата
Да ну как не дадут?? Если условие одного else не было выполнено, то будет компилятор искать следующий else, если он есть!

*Тихо-тихо* If условие. Else условие обратное.

Пример:

if ( a>b )
set a to b
else
set b to a
endif

Элсе это обратное условие. Т.е. a<b. Других элсе компилятор не знает.

 

Или формулировка Слага.

Изменено пользователем Муурн Шепард
Ссылка на комментарий
Поделиться на другие сайты

Вот пример одного из скриптов EJ-12 в плагине Имени Скального Наездника.

 

  Показать контент

 

 

  В 5/7/2011 в 1:54 PM, Phoenix_Neko сказал:

Короче.

http://wiki.rumor.ru/index.php?title=Morrowind:Use_if_elseif

 

Можно поставить несколько elseif один за другим:

 

Else выполняется, если все условия предыдущие оказались ложью! А если предыдущий else ложный, тогда что, следующий else не работает?

Изменено пользователем _aL_
Ссылка на комментарий
Поделиться на другие сайты

Может, вам стоило подумать, а не лямзить из первого попавшегося плагина, не проверив во втором/почитав MSFD/глянуть в офф. скрипты.
Ссылка на комментарий
Поделиться на другие сайты

  В 5/7/2011 в 1:58 PM, Муурн Шепард сказал:

Может, вам стоило подумать, а не лямзить из первого попавшегося плагина, не проверив во втором/почитав MSFD/глянуть в офф. скрипты.

 

Я чужими скриптами не пользуюсь если что, а плагин этот один из шедевров нелорных плугов, имхо! И если бы я не был прав, то ты думаешь компилятор ошибку не выдал? Этот факт ты в расход не берешь?

 

  В 5/7/2011 в 1:45 PM, Муурн Шепард сказал:

"Давай заодно и с этим поспорим!"

Тролль, тучный и с регенерацией.

 

И это мне говорит вот этот человек? :facepalm:

Изменено пользователем _aL_
Ссылка на комментарий
Поделиться на другие сайты

  Цитата
Этот факт ты в расход не берешь?

Минут 5 назад себе объяснил. Возможно, Беседка не рассчитывала на такое оригинальное использование и компилятор выдает только такие ошибки, из-за которых нельзя компилировать скрипт. Например, нет непися или переменной.

Ссылка на комментарий
Поделиться на другие сайты

Позвольте спросить, какого чорта тема делает в Таверне? Переношу в соответствующий раздел.
Ссылка на комментарий
Поделиться на другие сайты

А какой смысл ставить несколько else? Это шизофрения какая-то. На каждый if есть часть (после условия) которая выполняется если условие ИСТИННО, и часть (после else) если условие ЛОЖНО. Третьего не дано. Не путайте else и elseif.
Ссылка на комментарий
Поделиться на другие сайты

  В 5/7/2011 в 2:31 PM, z-Hunter сказал:

А какой смысл ставить несколько else? Это шизофрения какая-то. На каждый if есть часть (после условия) которая выполняется если условие ИСТИННО, и часть (после else) если условие ЛОЖНО. Третьего не дано. Не путайте else и elseif.

 

А если оба утверждения ложны? Вообще можно использовать elseif'ы, но также можно и else'ми обойтись, кто вообще придумал, что else может быть только один? Вопрос просто в том, что каждый пользуется своими приемами при написании скриптов, я вот юзаю else и все нормально работает, блин я еще раз повторюсь, что компилятор не выдает ошибки!

 

З.Ы.

 

  Показать контент

 

 

З.Ы.Ы.

 

  Показать контент

 

Изменено пользователем _aL_
Ссылка на комментарий
Поделиться на другие сайты

  Цитата
Позвольте спросить, какого чорта тема делает в Таверне? Переношу в соответствующий раздел.

Потому что могла превратиться во флуд.

  Цитата
я вот юзаю else и все нормально работает,

Подозрительно.

В общем выношу вывод про else в шапку.

Ссылка на комментарий
Поделиться на другие сайты

  В 5/7/2011 в 1:31 PM, Муурн Шепард сказал:
short doOnce

 

if ( doOnce == 0 )

set doOnce to 1

 

if ( GetDistance, Player

 

startCombat "_al_daedroth"

 

else

startCombat "_al_atronach_flame"

 

else

startCombat "_al_atronach_frost"

...

Гм, гм. А позвольте поинтересоваться, в каких условиях будет идти атака на морозного атронаха, а в каких - на огненного? Может, тут какая-то специфика морровиндовских скриптов, которую я позабыл?

И, кстати, на ком этот скрипт висит? Как он вообще может оказаться на меньшей к игроку дистанции, прежде чем условие сработает?

Ссылка на комментарий
Поделиться на другие сайты

  В 5/7/2011 в 4:21 PM, Deathruler сказал:

Гм, гм. А позвольте поинтересоваться, в каких условиях будет идти атака на морозного атронаха, а в каких - на огненного? Может, тут какая-то специфика морровиндовских скриптов, которую я позабыл?

И, кстати, на ком этот скрипт висит? Как он вообще может оказаться на меньшей к игроку дистанции, прежде чем условие сработает?

 

Атака морозного атронаха произойдет в случае, если рядом не будет обоих даедр, упомянутых выше. Увы после убийства последних скрипт не будет делать вновь проверку, если сделать скрипт циклом, то игра начинает виснуть, после перезапуска сохранки скрипт заново отслеживает условия и действия, тогда вполне возможно убийство и морозного атронаха, и любого из списка, что следует за морозным! Скрипт висит на собственно одном из всех перечисленных даедр в скрипте.

 

 

  Показать контент

 

Изменено пользователем _aL_
Ссылка на комментарий
Поделиться на другие сайты

  Цитата
З.Ы.Ы. Муурн смысл было делать тему для спора, если ты сам написал свой кривойвывод в шапке?

Сделаю опрос, голосуйте.

Ссылка на комментарий
Поделиться на другие сайты

*Мозг лопается большими пузырями и, выкинув эксепшен, аварийно завершается*

 

Объясню действие Вашего скрипта:

 

Если (игрок близок к ПЕРСОНАЖУ-НА-КОТОРОМ-ВИСИТ-СКРИПТ), то:

 

---- даэдрот атакует игрока,

 

Иначе: //игрок далеко от персонажа, НА-КОТОРОМ-ВИСИТ-СКРИПТ

 

---- ледяной атронах атакует игрока

 

Иначе: // шо за нах? O_o? Не ближе и не дальше? А ГДЕ? :)

---- ничего не выполняется!

 

ГДЕ ПРОВЕРКА НА НАЛИЧИЕ МОНСТРОВ?

 

Надо так: (скрипт висит на каждом из монстров)

 

один-раз == 1? Возврат

 

Если (я мертв)

---- возврат

Иначе: //я, сцуко, еще жив!

---- Если (игрок близко)

----.---- один-раз = 1

----.---- атаковать игрока;

---- конец-если

конец-если

Ссылка на комментарий
Поделиться на другие сайты

Собственно, каждый Иф должен закрываться одним Элсом, а ЭлсИфов можно вкладывать сколько угодно, но не забывать, что после выполнения первого же условия (Иф или ЭлсИф) условие закрывается и Иф завершается.
Ссылка на комментарий
Поделиться на другие сайты

  Цитата
Собственно, каждый Иф должен закрываться одним Элсом, а ЭлсИфов можно вкладывать сколько угодно, но не забывать, что после выполнения первого же условия (Иф или ЭлсИф) условие закрывается и Иф завершается.

Если с деталями, то после первого ифа/элсеифа/элсе все остальные элсеифы и элсе игнорируются, а скрипт прыгает до эндифа.

Ссылка на комментарий
Поделиться на другие сайты

  В 5/7/2011 в 5:48 PM, Phoenix_Neko сказал:

Собственно, каждый Иф должен закрываться одним Элсом, а ЭлсИфов можно вкладывать сколько угодно

на практике выяснилось, что ЭлсИфов может быть не более то ли десяти, то ли двадцати штук, уже не помню:( остальные не выполняются:(

пришлось все делать отдельными Ифами:)

 

ЗЫ. Да, и тот мой скрипт можно сделать еще проще, если вставить ЭлсИф:)

Изменено пользователем Boeny
Ссылка на комментарий
Поделиться на другие сайты

  В 5/7/2011 в 5:54 PM, Муурн Шепард сказал:
Если с деталями, то после первого ифа/элсеифа/элсе все остальные элсеифы и элсе игнорируются, а скрипт прыгает до эндифа.
Я так и сказал.

 

  Цитата
на практике выяснилось, что ЭлсИфов может быть не более то ли десяти, то ли двадцати штук, уже не помню:( остальные не выполняются:(
А десять или двадцать прочих условий - это мало? о_О
Ссылка на комментарий
Поделиться на другие сайты

  В 5/7/2011 в 2:46 PM, _aL_ сказал:

А если оба утверждения ложны? Вообще можно использовать elseif'ы, но также можно и else'ми обойтись, кто вообще придумал, что else может быть только один? Вопрос просто в том, что каждый пользуется своими приемами при написании скриптов, я вот юзаю else и все нормально работает, блин я еще раз повторюсь, что компилятор не выдает ошибки!

 

Какие ОБА утверждения? В операторе if только ОДНО условие. Оно может быть или истино или ложно, третьего не дано. По крайней мере в Аристотелевской логике и языках программирования так.

Конечно, если взять женскую логику, то там возможны такие условия как "персонаж и не близко и не далеко от игрока" или "персонаж одновременно близко и далеко от игрока" и даже "персонаж возможно близко, а возможно и далеко", но это пока что ни в одном языке программирования не реализовано %)

 

И нет там никакого компилятора. В TES-III интерпретируемый язык. Видимо проверки на несколько else там просто нет, но вопрос, зачем их ставить? Они же или не выполнятся кроме первого, или выполнятся все одновременно.

Изменено пользователем z-Hunter
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...