Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
02.09.2011 13:01

Olegus t.Gl.
Участник (+1039, -248)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2851
Вебсайт

Особенности использования конструкции IIF (…, …, …)

Конструкция IIF(<условие/выражение>, <результат1>, <результат2>), которая возвращает результат1 или результат2 в зависимости от результата условия (выражения), весьма полезна и иной раз помогает сократить код, часто даже делая его более читаемым. Однако при использовании в ней вызова функций следует знать одну особенность: ВСЕ выражения в этой конструкции вычисляются (QSP 5.7.0).

Допустим, нужно рассчитать значение переменной B по формуле B=1/A. Само собой, нельзя допустить, чтобы в эту формулу попала А, равная 0.
Использовать конструкцию IIF в данном случае, увы, не получится.

Код:

A = 0
B = IIF(A=0, 0, 1/A)

Плеер QSP 5.7.0 выдаст сообщение об ошибке — делении на 0, потому что он сперва попытается рассчитать все выражения: A=0, 0 и 1/A, а потом уже выбрать значение, согласно условию.

Поэтому в данной ситуации приходится использовать старое доброе IF … ELSE … END:

Код:

A = 0
if A=0:
    B=0
else
    B=1/A
end

Неактивен

0    0    #2
02.09.2011 17:19

HzD_Byte
Модератор (+1, -1)
Откуда: Далеко
Зарегистрирован: 15.04.2006
Сообщений: 271
Вебсайт

Я люблю людей

http://qsp.su

Re: Особенности использования конструкции IIF (…, …, …)

Это связано с тем, что для функций все аргументы вычисляются до их вызова.
Возможно, для IIF стоит сделать исключение в будущих версиях QSP.

Неактивен

Powered by PunBB
© copyright 2001–2021 iFiction.Ru