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[].



In order to add comments you must register.
Copyright © 1997–2021 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 21.07.2016