- 1
- 2
- 3
- 4
- 5
var languageCodes = locales
.GroupBy(l => l.Key.Substring(0, 2))
.Select(group => group.First())
.Select(l => new KeyValuePair<string, string>(l.Key.Substring(0, 2), l.Value))
.OrderBy(l => l.Value);
guest 20.05.2016 09:20 # +1
3.14159265 20.05.2016 15:21 # +1
Нет AssParallel
guest 20.05.2016 15:14 # 0
3.14159265 20.05.2016 15:22 # +1
А кто там недавно втирал что C# умеет типы выводить похлеще жабы?
guest 20.05.2016 16:02 # 0
как видишь -- умеет.
Погугли уже "вывод типов", стыдно не знать что это такое
3.14159265 20.05.2016 17:06 # +1
> <string, string>
>var
Иди напитонjs, гость.
https://projectlombok.org/features/val.html
3_14dar 20.05.2016 19:44 # +1
3.14159265 20.05.2016 20:01 # 0
3_14dar 29.05.2016 19:33 # +1
3_14dar 29.05.2016 19:32 # +3
Могу предположить, что аргументы в конструкторе коллекций в решетке необязательны. В общем, 3.14159265, пошел на стековерфлоу гуглить, 3.14159265!
guest 20.05.2016 20:45 # +2
3.14159265 20.05.2016 22:01 # 0
Мне очень важно твоё мнение.
guest 20.05.2016 22:55 # +3
В C# статическая типизация, и тип выражения язык умеет вычислять. Потому тип переменной можно не указывать. Можно написать "var foo = 1;" и C# поймет что foo это 1.
Это и называется "вывод типов".
Джава так не умеет, а C# умеет.
JS тут не причем, совершенно непонятно нахя ты его сюда приплел. Видимо ты увидел знакомое слово.
bormand 20.05.2016 20:58 # 0
Интересно, а в шарпе так можно?
guest 20.05.2016 21:06 # 0
http://ideone.com/Reoz4Y
bormand 20.05.2016 21:14 # +3
3.14159265 20.05.2016 21:57 # +1
А вообще-то KeyValuePair != Tuple
>KeyValuePair.Create(I.Key.Substring(0 , 2), l.Value))
Compilation error
error CS0117: `KeyValuePair' does not contain a definition for `Create'
ЫЫЫ
bormand 20.05.2016 22:12 # 0
Интересно, зачем сделали отдельный KeyValuePair, если есть Tuple? Только ради семантичненьких Key и Value?
3.14159265 20.05.2016 22:14 # +2
>хелпер типа крестового std::make_pair можно написать
Отличный вывод!
bormand 20.05.2016 22:14 # 0
Ох блядь, неужели к ним царь устроился?
3.14159265 20.05.2016 22:16 # 0
Попытки пояснить что jit маленькие объекты умеет сама, без всяких хинтов на стек запихивать, равно как инлайнить методы без мусорных кейвордов, успехом не увенчались.
bormand 20.05.2016 22:21 # 0
Жабий JIT их реально на стек запихивает, или просто на поля разъябывает, инлайнит методы к хуям и выкидывает лишний код и нинужные поля?
3.14159265 20.05.2016 22:23 # 0
guest 20.05.2016 23:06 # 0
JLS-же не дает программисту управлять этим, да и JVM тоже.
А в C# управлять можно. Так, структуру (value type) можно разместить на стеке.
kegdan 29.05.2016 15:17 # 0
http://ideone.com/FAp3vg
kegdan 29.05.2016 15:20 # +1
http://ideone.com/ELoDLq
inkanus-gray 29.05.2016 15:37 # 0
http://ideone.com/If8fo5
А так фолс, потому что тип второго поля не совпал:
http://ideone.com/KVFol8
И так фолс, потому что у второго поля название не совпало:
http://ideone.com/PQ9X1C
И так фолс, потому что порядок не совпал:
http://ideone.com/iCB9Xw
По сравнению с более старыми компиляторами Шарп действительно умный, потому что умеет объединять в один типы, у которых названия, типы и порядок компонентов совпадают.
kegdan 29.05.2016 16:13 # 0
inkanus-gray 29.05.2016 17:29 # 0
Турбо Паскаль типы с одинаковой сигнатурой считал разными, если они не объединены тайпдефом. Например, вот так всё работало: А вот так не компилировалось:
Кстати, почему в Шарпе порядок имеет значение? Почему имеет значение порядок полей в сишном типе struct и в паскалевском типе record, понятно: там доступ происходит по физическому смещению от начала записи. Изменишь порядок и смещения будут другими. А в Шарпе как реализован тип {key, value}?
kegdan 29.05.2016 18:21 # 0
На самом деле в шарпе тоже, только компилятор сам выбирает положение полей. Можно атрибутом поменять положение.
Хз почему они разные. Видимо из-за скорости выполнения. Если бы он просматривал все поля на соответствие, это могло бы занять много времени, бла-бла-бла.
kerman 21.05.2016 23:13 # 0
inversed 29.05.2016 14:10 # 0
neeedle 03.08.2016 21:27 # 0
linq обрабатывает одну строку после -> .Select(group => group.First())
Минусует только быдло, не способное в шарп, linq, и подобное.
Борманд придумавает велосипеды, хотя есть ToDictionary()
А пи до сих пор думает, что он программист.
neeedle 03.08.2016 21:34 # 0