parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 08.12.2014 12:24

a) не думаю, что поведение def мы изменим, т.к.
1. в настоящий момент лично у меня проблем с def не возникало (разве что с пустыми хэшами/таблицами)
2. это повлечёт за собой несовместимости

b)
@def[object;type]
^if((!def $type && $object.CLASS_NAME ne 'void') || (def $type && $object.CLASS_NAME eq $type)){
   $result(true)
}{
   $result(false)
}
=>
@def[object;type]
$result((!def $type && $object.CLASS_NAME ne 'void') || (def $type && $object.CLASS_NAME eq $type))
c)
в своём @def вы смешали def и is, и я на демаю, что это хорошо.
кроме того, вы забыли, что встроенный is возвращает true и в случае, если проверяемый объект является потомком проверяемого типа, без этого is ну нафиг не нужен:
@main[]
$o[^b::create[]]
^if($o is "a"){yes}{no} ^rem{ выведет 'yes' }
^if(^def[$o;a]){yes}{no} ^rem{ выведет 'no'. это ваш @def }


@CLASS
a

@create[]



@CLASS
b

@BASE
a

@auto[]