Перейти к основному содержимому

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>>")

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