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>>")
Попробуйте записать это с помощью операторов условий.