Минутка WTF-16: Nice try
От: Sinix  
Дата: 06.02.17 13:54
Оценка: 15 (2)
Спонсор сегодняшнего WTF — Ayende Rahien's Challenge: What does this code do? (спойлеры по ссылке!)

var doc = new Dictionary<string,object>
{
    ["@metadata"] = new Dictionary<string, object>
    {
        ["@id"] = "users/1"
    }
    ["Name"] = "Oren"
};

Console.WriteLine(doc["@metadata"]);


Что не так?

UPD Уже есть проверка в решарпере. Спасибы передавать ув. Пельмешко
Отредактировано 07.02.2017 5:18 Sinix . Предыдущая версия .
минутка wtf
Re: Что не так с этим WTF?
От: Qbit86 Кипр
Дата: 06.02.17 14:07
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Что не так?


В этот раз так себе WTF. Сколько раз приходил, всегда WTF хорошие были!
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Что не так с этим WTF?
От: Sinix  
Дата: 06.02.17 14:19
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>В этот раз так себе WTF. Сколько раз приходил, всегда WTF хорошие были!

Тут с какой стороны посмотреть. По спецэффектам в реальном коде — более чем ок. Особенно в связи с неоднократными попытками протащить json literals.

Оффтоп: Последнее особенно прекрасно после

XML literals

Never! We won't bake in a specific format.

П — последовательность
Re: Минутка WTF-16: Nice try
От: Jack128  
Дата: 06.02.17 14:30
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Спонсор сегодняшнего WTF — Ayende Rahien's Challenge: What does this code do? (спойлеры по ссылке!)


S>
S>var doc = new Dictionary<string,object>
S>{
S>    ["@metadata"] = new Dictionary<string, object>
S>    {
S>        ["@id"] = "users/1"
S>    }
S>    ["Name"] = "Oren"
S>};

S>Console.WriteLine(doc["@metadata"]);
S>


S>Что не так?


Запятая намеренно пропущена или случайно ??
Re[2]: Минутка WTF-16: Nice try
От: Sinix  
Дата: 06.02.17 14:35
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Запятая намеренно пропущена или случайно ??

А запусти и проверь. В этом и есть вся прелесть ситуации.
Re[3]: Минутка WTF-16: Nice try
От: Jack128  
Дата: 06.02.17 14:50
Оценка:
Здравствуйте, Sinix, Вы писали:

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


J>>Запятая намеренно пропущена или случайно ??

S>А запусти и проверь.
Ну я думал такие задачки нужно в уме решать.

S>В этом и есть вся прелесть ситуации.

Прикольно. Хотя я так и не понял нафиг нужны эти извращения, если есть collection-initializers, лишенные подобных проблем.
Re[4]: Минутка WTF-16: Nice try
От: Sinix  
Дата: 06.02.17 16:01
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Ну я думал такие задачки нужно в уме решать.

Можно и в уме, главное чтоб результат совпал с предсказанным


J>Прикольно. Хотя я так и не понял нафиг нужны эти извращения, если есть collection-initializers, лишенные подобных проблем.

Если помнишь, тут регулярно зарубы были на тему "хотим everything as expression" vs "не вопрос, но результат вам не понравится". Ну так вот…

И что-то мне подсказывает, что приключения только начинаются.
Re: Минутка WTF-16: Nice try
От: Somescout  
Дата: 08.02.17 13:48
Оценка:
Соглашусь с Jack128 — так себе WTF. Смутила только форма записи инициализатора.
ARI ARI ARI... Arrivederci!
Re[2]: Минутка WTF-16: Nice try
От: Sinix  
Дата: 08.02.17 14:00
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Соглашусь с Jack128 — так себе WTF. Смутила только форма записи инициализатора.


Ок, WTF WTF пост — сделано.
Re[3]: Минутка WTF-16: Nice try
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.02.17 15:04
Оценка:
Здравствуйте, Sinix, Вы писали:

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


J>>Запятая намеренно пропущена или случайно ??

S>А запусти и проверь. В этом и есть вся прелесть ситуации.

А почему компилятор не ругается на отсутствие запятой?
и солнце б утром не вставало, когда бы не было меня
Re[4]: Минутка WTF-16: Nice try
От: Sinix  
Дата: 08.02.17 15:36
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> А почему компилятор не ругается на отсутствие запятой?

Потому что код — валидный c#6 Чему он эквивалентен — собственно и есть главный вопрос этого топика.
Отредактировано 08.02.2017 15:36 Sinix . Предыдущая версия .
Re[5]: Минутка WTF-16: Nice try
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 09.02.17 06:36
Оценка: 50 (1) +1
Здравствуйте, Sinix, Вы писали:

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


S>> А почему компилятор не ругается на отсутствие запятой?

S>Потому что код — валидный c#6 Чему он эквивалентен — собственно и есть главный вопрос этого топика.

var doc = new Dictionary<string,object>
{
    ["@metadata"] = new Dictionary<string, object>
    {
        ["@id"] = "users/1"
    }
    ["Name"] = "Oren"
};

Console.WriteLine(doc["@metadata"]);

соответсвует
var v= new Dictionary<string, object>
    {
        ["@id"] = "users/1"
    };

v["Name"]="Oren";



и по аналогии с
 object a, b;
 a = b = "Oren";


Получается
doc["@metadata"])=v["Name"]="Oren";



Просто я изначально не сишник. Поэтому забываю про возможность записи
 object a, b;
 a = b = "Oren";
и солнце б утром не вставало, когда бы не было меня
Отредактировано 09.02.2017 7:04 Serginio1 . Предыдущая версия .
Re[2]: Минутка WTF-16: Nice try
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 09.02.17 07:52
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Соглашусь с Jack128 — так себе WTF. Смутила только форма записи инициализатора.


Собственно, мало отличается от примера, когда тело для какого нибудь if задают на несколько стейтментов, а потом аккуратно, дабы не потревожить автоформаттер, убирают фигурные скобки.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.