parser

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

 

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

Со стороны языка было бы полезно иметь возможность указать интерфейс, поддерживаемый классом...

Sumo 06.10.2015 16:15 / 06.10.2015 16:16

Я как-то даже тикет заводил в парсеровском Редмайне. Например:
@CLASS
myHash

@IMPLEMENTS
hash

....
@foreach[key;value;code;separator]
 ...
И потом:
$o[^myHash::create[]]

^if($myHash is hash){
  ^myHash.foreach[k;v]{
    ...
  }
}
Мы декларируем совместимость с каким-то классом, а потом можем проверить его совместимость через is. Т.е. is будет проверять не класс, а интерфейс.

Миксины как раз тот случай, когда хотелось бы иметь какой-то способ указать совместимость:
  $o[^my::create[]]
  ^mix3:include_mixin[$o]
  ^reflection:implements[$o;mix3] <- это можно сделать и в методе include_mixins

  ^if($0 is mix3){...}
Тогда у нас появляется почти множественное наследование и интерфейсы. :)