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:
Проверка определенности метода
Значение $имя_метода, это тоже junction, поэтому проверять существование метода необходимо также оператором is, а не def:
@body[]
тело
@main[]
Старт
^if($body is junction){
^body[]
}{
Метод «body» не определен!
}
Финиш
Внимание: с помощью данной проверки невозможно определить наличие в переменное кода, т.к. любое обращение к нему вызывает его выполнение.