[Nemerle] Макросы, еще один вопрос.
От: ie Россия http://ziez.blogspot.com/
Дата: 13.10.06 16:18
Оценка:
В форуме "Исходники" я запостил [Nemerle] Реализация WeakEvent.
Автор: ie
Дата: 13.10.06
.
По мере написания поста, задался вопросом, и что-то с ходу так и не сообразил, а возможно ли такое. Итак:
не нравиться так:
[WeakRefEvent]
public event Fire : D2;

а, например, так нравиться:
public event Fire : D2 make weak;

Возможно ли?
... << RSDN@Home 1.2.0 alpha rev. 655>>

30.01.07 18:08: Перенесено модератором из 'Декларативное программирование' — IT
Превратим окружающую нас среду в воскресенье.
Re: [Nemerle] Макросы, еще один вопрос.
От: Vermicious Knid  
Дата: 13.10.06 23:20
Оценка: 36 (3)
Здравствуйте, ie, Вы писали:
ie>public event Fire : D2 make weak
ie>Возможно ли?
Именно так — нет. Вот так возможно:
public weak event Fire : D2;

Или так(но так не советую):
public make weak event Fire : D2

Делается это элементарно(в стандартной библиотеке макросов таких примеров очень и очень много):
  macro WeakRefEvent(t : TypeBuilder, e : EventBuilder) syntax("weak")

Но мне кажется злоупотреблять введением ключевых слов не стоит, особенно учитывая то, что механизма разрешения конфликтов между макросами расширяющими синтаксис пока фактически нет. Вводя ключевое слово weak, ты фактически запрещаешь использование такого ключевого слова для других макросов и идентификаторов с таким именем.

Я в последнее время привык использовать такие макросы как Record и Acessor примерно таким образом:
[Record] public class Foobar
    [Accessor] baz : int

Думаю никакой трагедии не произойдет, если пользователь твоего макроса будет писать так:
[Weak] public event Fire : D2;

В качестве бонуса появится возможность определить другой макрос с таким же именем, но работающий например с полями, свойствами или чем-нибудь еще.
Re[2]: [Nemerle] Макросы, еще один вопрос.
От: ie Россия http://ziez.blogspot.com/
Дата: 14.10.06 05:34
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

ie>>Возможно ли?

VK>Делается это элементарно(в стандартной библиотеке макросов таких примеров очень и очень много):
VK>
VK>  macro WeakRefEvent(t : TypeBuilder, e : EventBuilder) syntax("weak")
VK>


+1. Знал ведь, да забыл

VK>Но мне кажется злоупотреблять введением ключевых слов не стоит, особенно учитывая то, что механизма разрешения конфликтов между макросами расширяющими синтаксис пока фактически нет. Вводя ключевое слово weak, ты фактически запрещаешь использование такого ключевого слова для других макросов и идентификаторов с таким именем.


Ты, конечно, прав. Я вот в толк не возьму, а что мешает резолвить такие конфликты? Мне кажеться, что рано или поздно этот резолвер все равно потребуется.

Кстати, может есть какие мыслы по поводу raise метод у событий в C#
Автор: ie
Дата: 13.10.06
?
Глянул в Boo, думал может там какая идея красивая, так там они просто подло запретили даже add/remove определять.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Превратим окружающую нас среду в воскресенье.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.