Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

13.3. Не работает `IIF`!

В: Не работает `IIF`!

Пишу такой код:

IIF(prprpr>0, GOSUB '1', prprpr=1)

Но плеер не выполняет команду GOSUB.

О:

`IIF` — это не оператор, это функция. Её преднаначение: ВОЗВРАЩАТЬ то или иное ЗНАЧЕНИЕ в зависимости от результата проверки условия.

Внимательно читайте справку, прежде чем использовать какую-либо функцию или оператор:

IIF([#выражение],[выражение_да],[выражение_нет]) - ВОЗВРАЩАЕТ ЗНАЧЕНИЕ выражения [выражение_да], если [#выражение] верно, иначе значение выражения [выражение_нет].

Функция позволяет существенно сократить запись некоторых условий.

Например, у нас есть число `number` и нам нужно получить модуль этого числа `abs_number`. Если бы мы делали это с помощью оператора условий, то запись выглядела бы так:

if number<0: abs_number=-number else abs_number=number

При использовании функции IIF, запись сокращается:

abs_number=IIF(number<0,-number,number)

Вообще, функция удобна там, где нам нужно получить один из двух вариантов значения.

Например, мы делаем в игре отображение времени, и нам нужно, чтобы на экран выводилось время в формате 00:00. Т.е. например, четверть третьего ночи должны выглядеть так:

02:15

А пять минут двенадцатого днём так:

11:05

При этом число минут мы считаем в переменной `minutes`, а число часов — в переменной `hours`:

$IIF(hours<10,"0<<hours>>","<<hours>>")+":"+$IIF(minutes<10,"0<<minutes>>","<<minutes>>")

Попробуйте записать это с помощью операторов условий.