Определение операторов в Boo
-
10-07-2019 - |
Вопрос
Я хочу перенести часть своего более легкого метапрограммирования из Nemerle в Boo и пытаюсь выяснить, как определять собственные операторы.Например, в Nemerle я могу сделать следующее:
macro @<-(func, v) {
<[ $func($v) ]>
}
Тогда эти два эквивалентны:
foo <- 5;
foo(5);
Я не могу найти способ сделать это в Boo — есть идеи?
Решение
Хотя Boo поддерживает перегрузку операторов путем определения соответствующей статической операторной функции ( op_addition
), а также поддерживает синтаксические макросы, в настоящее время он не поддерживает создание пользовательских операторов.
Другие советы
Я не уверен, что это именно то, что вам нужно, но в Boo вы можете создавать синтаксические макросы.На сайте CodeHaus есть некоторая информация. http://boo.codehaus.org/Syntactic+Macros, но синтаксис изменился в одном из последних выпусков.Я не знаю никаких руководств по новому синтаксису, но в исходном выпуске Boo 0.8.2 есть несколько примеров (некоторые языковые структуры реализованы в виде макросов).Если вы не хотите загружать полный исходный код, доступен репозиторий SVN: https://svn.codehaus.org/boo/boo/trunk/src/Boo.Lang.Extensions/Macros/.Макрос Assert будет хорошим началом.
ХТХ
Стоо