[Ann, VS 2015 RC] Tadpole operators
От: Sinix  
Дата: 26.05.15 08:32
Оценка: 41 (5) +1 :))) :))) :)
Всем известный Реймонд Чен (который The Old New Thing блог, также рекомендую великолепные переводы от gunsmocker)...

Так вот, этот человек и пароход искренне делится со своими читателями новым инсайтом! Та-дамм, The tadpole operators:
#define __ENABLE_EXPERIMENTAL_TADPOLE_OPERATORS

using System;

class Program
{
    static void Main()
    {
        var x = 2;
        Console.WriteLine(~-x); // x-1
        Console.WriteLine(-~x); // x+1

        Console.Write("Done.");
        Console.ReadKey();
    }
}

Штука экспериментальная, не забудьте про дефайн!
Зачем оно надо? Ну, во-первых стандартный ++ оператор страдает от широко известной i++-++i problem (из-за досадного бага в компиляторе результат выражения — константа, можете сами проверить).
Во-вторых, в связи с популярностью ФП операторы с побочными эффектами как-то совсем не комильфо.

Причём тут шарп, если в оригинальном топике речь про c++? Ну, авторам оччень нравится эта фишка, так что они в свободное время продавили её в несколько других языков.


P.S. На сегодня фичу официально не объявляли, как и предыдущую
Автор: Sinix
Дата: 03.04.15
так что не палите контору

P.P.S. А, да! Товарищи члены клуба элитных программистов
Автор: SaprXM
Дата: 22.03.15
! Не забываем про членские взносы, можно постами.
Отредактировано 26.05.2015 8:58 Sinix . Предыдущая версия . Еще …
Отредактировано 26.05.2015 8:37 Sinix . Предыдущая версия .
Re: [Ann, VS 2015 RC] Tadpole operators
От: _ichensky Европа https://github.com/ichensky
Дата: 27.05.15 20:51
Оценка: 1 (1)
Здравствуйте, Sinix, Вы писали:

S>Всем известный Реймонд Чен (который The Old New Thing блог, также рекомендую великолепные переводы от gunsmocker)...


S>Так вот, этот человек и пароход искренне делится со своими читателями новым инсайтом! Та-дамм, The tadpole operators:

S>
S>#define __ENABLE_EXPERIMENTAL_TADPOLE_OPERATORS

S>using System;

S>class Program
S>{
S>    static void Main()
S>    {
S>        var x = 2;
S>        Console.WriteLine(~-x); // x-1
S>        Console.WriteLine(-~x); // x+1

S>        Console.Write("Done.");
S>        Console.ReadKey();
S>    }
S>}
S>


в .net 4.6(vs 15rc) без #define
        static void Main(string[] args)
        {
            var x = 2;
            Console.WriteLine(-~-x);    // -1
            Console.WriteLine(~-x);     // 1
            Console.WriteLine(~~-x);    // -2
            Console.WriteLine(~~~-x);   // 1
            Console.WriteLine(~~~~-x);  // -2 
            Console.WriteLine(~~~~~-x); // 1
            Console.WriteLine("/////");
            Console.WriteLine(-~x);      // 3
            Console.WriteLine(-~~x);     // -2
            Console.WriteLine(-~~~x);    // 3
            Console.WriteLine(-~~~~x);   // -2
            Console.WriteLine(-~~~~~x);  // 3
            Console.WriteLine("/////");
            Console.WriteLine(-~'0');    // 49            
            Console.WriteLine(~-'0');    // 47

            Console.Write("Done.");
            Console.ReadKey();

        }
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Отредактировано 27.05.2015 21:29 #John . Предыдущая версия . Еще …
Отредактировано 27.05.2015 21:11 #John . Предыдущая версия .
Отредактировано 27.05.2015 21:06 #John . Предыдущая версия .
Re: [Ann, VS 2015 RC] Tadpole operators
От: hi_octane Беларусь  
Дата: 26.05.15 09:00
Оценка: +1
S>Так вот, этот человек и пароход искренне делится со своими читателями новым инсайтом! Та-дамм, The tadpole operators:
Ща проверил — в Nemerle годичной давности эти операторы уже запилили макросом. Бум надеяться в шарпе в релиз пойдёт без дефайна — во всяких циклах штука полезная.
Re[3]: [Ann, VS 2015 RC] Tadpole operators
От: fddima  
Дата: 26.05.15 10:21
Оценка: :)
Здравствуйте, Sinix, Вы писали:

S>Как человек, который работает по anti-Valve calendar я искренне им завидую

Пойду-ка я лучше... п(р)осплю(сь). Авось и всё на место вернётся.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: [Ann, VS 2015 RC] Tadpole operators
От: Sinix  
Дата: 26.05.15 10:32
Оценка: :)
Здравствуйте, fddima, Вы писали:
F> Пойду-ка я лучше... п(р)осплю(сь). Авось и всё на место вернётся.

-~!
// +1!
Re: [Ann, VS 2015 RC] Tadpole operators
От: fddima  
Дата: 26.05.15 09:02
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Зачем оно надо? Ну, во-первых стандартный ++ оператор страдает от широко известной i++-++i problem (из-за досадного бага в компиляторе выражение транслируется в константу, можете сами проверить).

Эээ?! А i+1-1+i или 1+i-i+1 совсем никак нельзя обойтись? Выглядит, кстати тоже ничего.
Какое-то позднее у них первое апреля однако.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: [Ann, VS 2015 RC] Tadpole operators
От: Sinix  
Дата: 26.05.15 09:21
Оценка:
Здравствуйте, fddima, Вы писали:

F> Эээ?! А i+1-1+i или 1+i-i+1 совсем никак нельзя обойтись? Выглядит, кстати тоже ничего.

Низзя, breaking change. Сами попробуйте, результат другой.


F> Какое-то позднее у них первое апреля однако.

Это вы ещё официальный календарь от Valve не видели. И официальные же комментарии:

Valve Time is interesting ... And people get an idea of Valve Time because they're very used to how maybe other people work and bring things out. Other people have much more formalised schedules. They have dates they have like lines in the sand because of their structures (у Valve эти линии проводят, очевидно, на воде — Sinix).

...

The reason for that is because it's odd. ... It's actually not super important if this thing comes out on the Christmas where we said ... What's actually more important is ... it comes out in spring.
...
Because we're trusting the fact that when it takes longer, it will be better.
...
It's a high compliment!


Как человек, который работает по anti-Valve calendar я искренне им завидую
Re[2]: [Ann, VS 2015 RC] Tadpole operators
От: Sinix  
Дата: 28.05.15 05:38
Оценка:
Здравствуйте, _ichensky, Вы писали:

_>в .net 4.6(vs 15rc) без #define


Ну, это явный баг. Причём багу куча лет, с первого шарпа был.

А, да, больше деталей — в Tadpole operators explained.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.