Roslyn: встреча .Net сообщества на CLRium #2
сегодня в 12:33
Довольно долгое время я пытался изучить Roslyn, но как и все мы, столкнулся с единой проблемой: времени на это абсолютно не было. Как обычно решается этот вопрос? Мы идем на множество ресурсов и ищем доклады и статьи на интересующую нас тему и как по шаблону повторяем движения автора, который показывает как этим пользоваться. С чем мы сталкиваемся, когда ищем описания тем, предложенных на CLRium? Мы не находим ничего. Т.е., конечно, Google выдает что-то по запросам «Roslyn», «Roslyn samples», но все-таки это тысячу раз разжеванные примеры, и притом древние как мамонты по меркам выхода новых версий CTP. Это важно, т.к. наличие информации предполагает развитость той или иной инфраструктуры. А самая крутая и единственная статья по Roslyn на данный момент — это эта: Roslyn для автоматического перевода кода C# в 1С-кодОтсюда и возникли идеи рассказать на CLRium про Roslyn, RyuJIT, CoreFx, шаринг объектов между процессами и прочие вопросы, на которые сложно найти ответы в сети Интернет.Итак, основные темы, которые мы готовы покрыть на докладе по Roslyn: Мы не будем делать вводную: в интернете все доклады — это вводные и вы их видели Мы разберем от простого к сложному, как устроены существующие правила в поставке Roslyn (C# 6 features). Но рассмотрим не список, как это делают на конференциях, а их исходный код Как только мы их рассмотрим, мы рассмотрим существующие метрики на Roslyn. Как они написаны, как строятся метрики кода. Далее мы напишем не просто «подсчитаем количество букв «а» во всех словах исходных текстов, мы напишем поддержку кортежей для C#: public (int, int) ReturnCoords () { return (0, 0); } var (x, y) = ReturnCoords (); И сделаем Nemerle оператор match. match (i) { | 1 => Console.WriteLine (1) | 2 => Console.WriteLine (2) | x => Console.WriteLine (x) } match (i) { | x when (x < 0) => WriteLine («negative») | x when (x > 36) => WriteLine («more than 36») | x when (x % 2 == 0)=> WriteLine ($«valid even number $x») | x => WriteLine ($«valid odd number $x») } match (obj) { | iDisp is IDisposable => iDisp.Dispose () | _ => (); } Это очень сложные примеры, которые так просто не напишешь за вечерок и это то, что вы хотите найти в сети Интернет, но не можете.
Контакты:
Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.