- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Собственно сижу я на работе, никого не трогаю, а тут в чат скайпа заваливается запыхавшийся бекэендер и говорит
- там... там... там ТАКОЕ!!
Все напряглись
- Какое?
- Там... Там 7 шарп завезли.
Пришлось успокоить парня, сказать, что до sp1 никто на 2017 студию переходить не будет, да и вообще, мы тут таких как вы не любим.
Но, любопытство гложило меня, почему я решил сам ознакомиться с мнимым великолепием надвмгающегося апдейта и спешу поделится
с вами - а чего же там такого собственно завезли
kegdan 23.03.2017 15:35 # −9
Раньше, что бы просунуть аут переменну в функцию нужно было ее придварительно создать, теперь же можно сувать сразу.
Но, так как ими почти никто не пользуется, всем похуй
2 Труплы
В майкрософт наконеч-то скачал GHC, после чего инженеры начали отчаянно пиздить идеи из функциональщины. Внезапно
оказалось, что tuple.new(хуй, пизда, джигурда) не лучший интерфейс для труплов, после чего было решено отбросить все до
первой скобки. Туда им и дорога
Зато теперь можно писать такое
3 Разламайка
Теперь мы можем прописать классу деконструктор (не путайте с деструктором, такого в шарп все еще не завезли).
код, вместо тысячи слов
(var myX, var myY) = GetPoint(); // calls Deconstruct(out myX, out myY);
Правда пока не ясно, не вырежут ли это, после того, как инженеров отпустит.
Hestia 23.03.2017 17:49 # −12
Dummy00001 23.03.2017 20:34 # −13
хаскель? больше на перл похоже.
> (var myX, var myY) = GetPoint(); // calls Deconstruct(out myX, out myY);
так это же точно перл. только у нас на динамике все без дегенератовконструктов: `return wantarray ? ($x, $y) : ($this)`
myaut 23.03.2017 23:27 # −11
negr 24.03.2017 00:07 # −13
doomginho 24.08.2024 01:40 # 0
doomginho 24.08.2024 01:42 # 0
kegdan 23.03.2017 15:35 # −13
Да, твои глаза не врут! Паттерн матчинг в твоем любимом шарпике
Теперь можно писать
if( a is (int i, string s)) {...}
и прочий невменяичь. Хаскеллисты в восторге
5 Ассасин-свитч
Ни что не истина и все дозволено
Помните те времена, когда в свитч можно было положить только константы времени компиляции? забудьте!
6 Xzibitционизм
Эй, бро, я слышал ты любишь методы, поэтому мы положили методы тебе в методы, что бы ты мог вызывать метод во время вызова
метода!
Что тут еще скажешь?
Dummy00001 23.03.2017 20:48 # −11
ты наверное не просёк фичу: это свитч по типу/классу, а не по значению.
в крестах видел народ пытался такое делать - вроде никуда не пошло (IIRC здесь на ГК как-то раз пробегало).
это ценная фича для тех кому она нужна.
kegdan 23.03.2017 15:36 # −13
Теперь в числовые литералы можно засовывать _
А если лень кастовать из бинарной в десятичную, то свпециально для тебя в шарп завезли бинарные литералы
8 вногострел, или возвращение блудного указателя
Теперь можно возвращать не значение элемента массива, а ссылку на него
9 набор юнного лучника
А вам понравились проперти с функциональными стрелочками для обявление геттера? Хотите еще? их есть у меня!
Dummy00001 23.03.2017 20:37 # −12
опять блин перл. (хотя ларри волл признавался что он это из ады передрал.)
мало кто осознаёт, но это просто гениальная фича когда надо с кучей цифровых констант работать.
> ??
опять перл. только оригинальный синтакс это `||` или `or` или новый `//`
ASD_77 23.03.2017 21:19 # −11
barop 23.03.2017 21:28 # −19
Dummy00001 23.03.2017 20:52 # −12
к слову тоже из перла. но только синтакс там извратный - с рефами/глобами надо извращатся, что бы сделать алиас на значение внутри массива/хэша. потому что переменная это просто "указатель" на значение, а массив это массив значений. и ничего не мешает к одному из значений массива еще одну переменную приклеить.
или еще более древняя отсылка - если не ошибаюсь - лисп: там тоже переменная и значение это две разные вещи, и ими можно тоже извращатся.
roman-kashitsyn 24.03.2017 00:01 # −11
Dummy00001 24.03.2017 00:47 # −11
практически подобие этого достигается только референсами - но они инвалидируются когда оригинальная переменная умирает. в С/С++ референс показывает в UB, в перле/лиспе значение продолжает жить, пока на него что-то ссылается.
roman-kashitsyn 24.03.2017 12:48 # −10
Причём здесь "переменные", зачем ты их придумал? Код в примере ссылается на ту память, которую ему передали, а не какую-нибудь там переменную на стеке. Вот аналогичный пример из C++
Возвращать ссылки на локальные переменные точно также нельзя, как и в плюсах:
There are some restrictions to ensure that this is safe:
You can only return refs that are “safe to return”: Ones that were passed to you, and ones that point into fields in objects.
Ref locals are initialized to a certain storage location, and cannot be mutated to point to another.
-- https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/
barop 24.03.2017 14:25 # −19
Кигги, видимо, думает что мпссив передается по знчению и живет в стеке
Но в нете массив живет в куче, а теье просто дали на него ссылку
ASD_77 24.03.2017 15:32 # −13
__reftype
__refvalue
А сейчас видимо тупо довели синтаксис до ума.
а имплементация все равно через .опу
kegdan 23.03.2017 15:36 # −10
Это уже не шарп, нахуй, это хаскель, блядь! - крикнет кто-нибудь и будет относительно прав. В 6 шарпе уже были некоторые предпосылки к такому развитию событий. Функиональшины было не так много, но она была скрученна в язык так, что не вызывала блевотные позывы при использовании. и это хорошо - подумали дизайнеры языка, и обмазали шарпеев функиональщиной с ног до головы. Пока данные изменения вызывают исключительно положительные эмоции, а что будет дальше - покажет время.
Всем сладких лямбд!
ASD_77 23.03.2017 15:49 # −12
Dummy00001 23.03.2017 20:38 # −12
во первых - перл. во вторых - я уверен что паттерн матчинг в шарее будет лучше чем в хацкеле работать.
Her 23.03.2017 15:48 # −12
ASD_77 23.03.2017 16:53 # −13
barop 25.03.2017 14:34 # −18
inkanus-gray 25.03.2017 15:16 # −12
huesto 23.03.2017 16:02 # −22
kegdan 23.03.2017 16:09 # −12
huesto 23.03.2017 16:28 # −22
CPAHA9I_CCAHIHA 23.03.2017 18:18 # −12
barop 23.03.2017 16:32 # −16
huesto 23.03.2017 17:00 # −22
// Пишу из опенспейса о наболевшем.
bormand 27.03.2017 22:46 # −15
Повезло ему, могла ведь и пятая достаться.
roman-kashitsyn 27.03.2017 23:06 # −4
bormand 27.03.2017 23:07 # −15
Это где нормальную модель памяти ещё не завезли?
roman-kashitsyn 27.03.2017 23:44 # −4
inhoguest 27.03.2017 23:47 # −13
bormand 27.03.2017 23:51 # −14
kegdan 28.03.2017 02:28 # −5
Ну и как тебе NieR: Automata
bormand 28.03.2017 06:42 # −15
Она ж где-то 10 дней назад всего вышла... Нестыковочка. Или ты про рай для оплаты за строки?
kegdan 28.03.2017 06:51 # −4
kegdan 28.03.2017 12:55 # −5
bormand 29.03.2017 07:15 # −15
> 150 тайтлов
/0
huesto 29.03.2017 11:44 # −15
dxd 29.03.2017 12:16 # −15
bormand 28.03.2017 06:47 # −15
10 тленов и безысходностей из 10.
This cannot continue.
gost 23.03.2017 17:16 # −13
gostinho 23.03.2017 22:10 # −22
dm_fomenok 23.03.2017 19:16 # −12
Ты не поверишь, но уже большинство тем, кто о неё знает, перешли.
barop 25.03.2017 14:32 # −18
inhoguest 23.03.2017 19:37 # −18
guestinio 23.03.2017 21:31 # −14
Профессор в отпуске, поэтому не сможет ознакомиться с Вашими пёрлами.
defecate-plusplus 24.03.2017 17:22 # −13
"пацаны!.. пацаны!!.. у них даже лошадь есть!"
kegdan 24.03.2017 17:28 # −13
defecate-plusplus 24.03.2017 19:59 # −13
MilosTeodosic 27.03.2017 23:53 # −15
doomginho 24.08.2024 01:45 # 0
Интересно, жив ли еще дефекате?