Кортежи в С#
От: s22  
Дата: 29.04.15 05:01
Оценка:
http://habrahabr.ru/post/256825/

Мне понравилось
var res = (sum: 0, count: 0, option :( sum: 0, count: 0));
Re: Кортежи в С#
От: hardcase Пират http://nemerle.org
Дата: 29.04.15 10:43
Оценка: :)))
Здравствуйте, s22, Вы писали:

s22>http://habrahabr.ru/post/256825/


s22>Мне понравилось

s22>
s22>var res = (sum: 0, count: 0, option :( sum: 0, count: 0));
s22>


Теперь в коде будут грустные смайлики и дочитать сигнатуру метода до названия и параметров смогут только самые терпеливые читатели.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Кортежи в С#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.04.15 10:59
Оценка:
Здравствуйте, s22, Вы писали:

s22>http://habrahabr.ru/post/256825/


s22>Мне понравилось

s22>
s22>var res = (sum: 0, count: 0, option :( sum: 0, count: 0));
s22>


Сейчас есть

var v = new { Amount = 108, Message = "Hello" };

// Rest the mouse pointer over v.Amount and v.Message in the following
// statement to verify that their inferred types are int and string.
Console.WriteLine(v.Amount + v.Message);


по аналогии
var res = new {sum= 0, count=0, option = new { sum= 0, count = 0}};
и солнце б утром не вставало, когда бы не было меня
Отредактировано 29.04.2015 10:59 Serginio1 . Предыдущая версия .
Re[2]: Кортежи в С#
От: hardcase Пират http://nemerle.org
Дата: 29.04.15 11:15
Оценка: 4 (1)
Здравствуйте, Serginio1, Вы писали:

S>Сейчас есть


У анонимных типов C# 3.0 есть существенные ограничения: их можно использовать статически типизировано только в пределах одного метода, а динамически типизировано (возвращаем object, обращаемся через dynamic) — только в пределах сборки. В статье по ссылке топикстартера рассказывается про внедрение в C# типа данных "запись", известного во всех языках, поддерживающих сопоставление с образцом. Собственно, без ПМ этот тип данных довольно бесполезен.

UPD. Жду когда народ сообразит досыпать в эти структуры данных лямбды и захочет реализовывать интерефейсы
/* иЗвиНите зА неРовнЫй поЧерК */
Отредактировано 29.04.2015 11:17 hardcase . Предыдущая версия .
Re: Кортежи в С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.04.15 13:48
Оценка: +1
Здравствуйте, s22, Вы писали:

s22>Мне понравилось

s22>
s22>var res = (sum: 0, count: 0, option :( sum: 0, count: 0));
s22>


Дотнет не заточен под это дело. Именаованные поля могут быть только в именованных типов. Если создавать оные компилятором, то будут дубликаты типов в разных сборках и несовместимость между ними. Тут надо или допиливать дотнет, или реализовывать параллельные метаданные и таскать их везде где могут появиться такие "кортежи". Ну, и это уже не кортежи, а записи (records).

Для C#-а все это несколько печально, так как записи почти идентичны безымянным типам и будут дублировать функциональность. По уму нужно тупо допилить анонимные типы, а не вводить новые сущности.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Кортежи в С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.04.15 13:50
Оценка:
Здравствуйте, hardcase, Вы писали:

H>У анонимных типов C# 3.0 есть существенные ограничения: их можно использовать статически типизировано только в пределах одного метода


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