Opis
is. Проверка типа | |
объект is тип
Возвращает результат "истина/ложь" в зависимости от того, относится ли левый операнд к заданному типу.
Полезно использовать этот оператор в случае, если переменная может содержать единственное значение или набор значений (хеш), а также для проверки определенности методов.
Тип - имя типа, им может быть системное имя (hash, junction, …), или имя пользовательского класса.
Простая проверка типа
@main[]
$date[1999-10-10]
#$date[^date::now[]]
^if($date is string){
^parse[$date]
}{
^print_date[$date.year;$date.month;$date.day]
}
@parse[date_string][date_parts]
$date_parts[^date_string.match[(\d{4})-(\d{2})-(\d{2})][]]
^print_date[$date_parts.1;$date_parts.2;$date_parts.3]
@print_date[year;month;day]
Работаем с датой:<br>
День: $day<br>
Месяц: $month<br>
Год: $year<br>
В этом примере в зависимости от типа переменной $date либо выполняется синтаксический анализ строки, либо методу print_date передаются поля объекта класса date:
Проверка наличия в переменной кода
Т.к. оператор def не считает переменные, содержащие код, определенными, для проверки наличия в переменной кода необходимо использовать is:
$something{^do[]}
^if($something is junction){
# выполнение кода
$something
}
Проверка определенности метода
Значение $имя_метода, это тоже junction, поэтому проверять существование метода необходимо также оператором is, а не def:
@body[]
тело
@main[]
Старт
^if($body is junction){
^body[]
}{
Метод «body» не определен!
}
Финиш