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 не определен!
}
Финиш

Внимание: с помощью данной проверки невозможно определить наличие в переменной кода, т. к. любое обращение к нему вызывает его выполнение. Для такой проверки следует использовать ^reflection:is[].



Copyright © 1997–2024 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 15.05.2024