[Lib] Новый макрос ?.
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.10 02:51
Оценка: 106 (6)
В Groovy есть такой оператор "?.". Он позволяет избежать NullReferenceException при доступе к членам.

Реализовал аналогичный макрос (доступен в стандартной библиотеке с ревизии 9000.

Пример использования:

      def b1 = IgnoreNullOperator.B();
      
      WriteLine(b1?.a?.i);
      
      for (mutable str = null; str?.Length <= 4; str += "Test")
      {
        WriteLine(str?.ToString() + "s");
        WriteLine(str?.Length);
      }

Консольный вывод:
0
s
0
Tests
4


Просьба к товарищам свободно пишущим на англицком добавить описание оператора в вики.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Lib] Новый макрос ?.
От: hardcase Пират http://nemerle.org
Дата: 14.07.10 09:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В Groovy есть такой оператор "?.". Он позволяет избежать NullReferenceException при доступе к членам.


Удобная штука (и номер ревизии тоже хорош), странно что "Safe Navigation" еще никто не прикрутил.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: [Lib] Новый макрос ?.
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.10 10:45
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Удобная штука (и номер ревизии тоже хорош), странно что "Safe Navigation" еще никто не прикрутил.


В свете возни с ХМЛ-ем (и т.п.) я подумывал над более сложным оператором который будучи заданным перед выражением перехватывал бы все обращения по null-ссылкам, но потом залез в описание Груви, посовещался с IT и в итоге реализовал грувевый вариант.

К сожалению глючит автодополнение в случае если нет идентификатора. Подозреваю, что это проблемы в лексере. Видимо дополнение делается только после точки, а по уму нужно делать его после любого оператора.

ЗЫ

Номер ревизии действительно юбилейный. Проведение как бы намекает, что пора выпускать вторую бэту.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Lib] Новый макрос ?.
От: _nn_ www.nemerleweb.com
Дата: 14.07.10 13:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Просьба к товарищам свободно пишущим на англицком добавить описание оператора в вики.


А куда именно в вики надо его вставить ?

Пока нашел вставить тут: http://nemerle.org/Quick_Guide#Nullable_types.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: [Lib] Новый макрос ?.
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.10 14:06
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Пока нашел вставить тут: http://nemerle.org/Quick_Guide#Nullable_types.


Мне кажется надо создать отдельную страничку макро-операторов входящих в стандартную библиотеку. Разместить ее нужно рядом с http://nemerle.org/Accessor_macros (т.е. в разделе Macros\Macro packages).

Ссылка Macros\Macro packages почему-то ведет на http://nemerle.org/Accessor_macros. По хорошему это нужно изменить. Macros\Macro packages должна вести на страницу http://nemerle.org/Macro_packages с которой уже должны быть ссылки на подразделы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [Lib] Новый макрос ?.
От: _nn_ www.nemerleweb.com
Дата: 14.07.10 14:23
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ссылка Macros\Macro packages почему-то ведет на http://nemerle.org/Accessor_macros.

Знать бы где поправить.

Да много чего не работает в вики, а ссылки есть:
http://nemerle.org/Special:Specialpages
http://wiki.nemerle.org/Editing_this_wiki

P.S.
Заглавную страницу как я могу редактировать ?
Там надо подправить ссылки.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: [Lib] Новый макрос ?.
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.10 15:09
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, VladD2, Вы писали:


VD>>Ссылка Macros\Macro packages почему-то ведет на http://nemerle.org/Accessor_macros.

__>Знать бы где поправить.

+1

Короче я создал страницу: http://nemerle.org/Macro_operators
и внес в нее список макро-операторов из стандартной библиотеки, плюс накропал примеры использования.

__>Да много чего не работает в вики, а ссылки есть:

__>http://nemerle.org/Special:Specialpages
__>http://wiki.nemerle.org/Editing_this_wiki

Ага. Но это обходится. Надо к такой ссылке добавить какой-нить параметр, например "?title=".
Вот как можно посмотреть категорию "Macro packages":
http://nemerle.org/Main_Page?title=Category:Macro_packages

__>P.S.

__>Заглавную страницу как я могу редактировать ?
__>Там надо подправить ссылки.

Надо спросить Котчеткова.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.