- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Собственно сижу я на работе, никого не трогаю, а тут в чат скайпа заваливается запыхавшийся бекэендер и говорит
- там... там... там ТАКОЕ!!
Все напряглись
- Какое?
- Там... Там 7 шарп завезли.
Пришлось успокоить парня, сказать, что до sp1 никто на 2017 студию переходить не будет, да и вообще, мы тут таких как вы не любим.
Но, любопытство гложило меня, почему я решил сам ознакомиться с мнимым великолепием надвмгающегося апдейта и спешу поделится
с вами - а чего же там такого собственно завезли
Раньше, что бы просунуть аут переменну в функцию нужно было ее придварительно создать, теперь же можно сувать сразу.
Но, так как ими почти никто не пользуется, всем похуй
2 Труплы
В майкрософт наконеч-то скачал GHC, после чего инженеры начали отчаянно пиздить идеи из функциональщины. Внезапно
оказалось, что tuple.new(хуй, пизда, джигурда) не лучший интерфейс для труплов, после чего было решено отбросить все до
первой скобки. Туда им и дорога
Зато теперь можно писать такое
3 Разламайка
Теперь мы можем прописать классу деконструктор (не путайте с деструктором, такого в шарп все еще не завезли).
код, вместо тысячи слов
(var myX, var myY) = GetPoint(); // calls Deconstruct(out myX, out myY);
Правда пока не ясно, не вырежут ли это, после того, как инженеров отпустит.
хаскель? больше на перл похоже.
> (var myX, var myY) = GetPoint(); // calls Deconstruct(out myX, out myY);
так это же точно перл. только у нас на динамике все без дегенератовконструктов: `return wantarray ? ($x, $y) : ($this)`
Да, твои глаза не врут! Паттерн матчинг в твоем любимом шарпике
Теперь можно писать
if( a is (int i, string s)) {...}
и прочий невменяичь. Хаскеллисты в восторге
5 Ассасин-свитч
Ни что не истина и все дозволено
Помните те времена, когда в свитч можно было положить только константы времени компиляции? забудьте!
6 Xzibitционизм
Эй, бро, я слышал ты любишь методы, поэтому мы положили методы тебе в методы, что бы ты мог вызывать метод во время вызова
метода!
Что тут еще скажешь?
ты наверное не просёк фичу: это свитч по типу/классу, а не по значению.
в крестах видел народ пытался такое делать - вроде никуда не пошло (IIRC здесь на ГК как-то раз пробегало).
это ценная фича для тех кому она нужна.
Теперь в числовые литералы можно засовывать _
А если лень кастовать из бинарной в десятичную, то свпециально для тебя в шарп завезли бинарные литералы
8 вногострел, или возвращение блудного указателя
Теперь можно возвращать не значение элемента массива, а ссылку на него
9 набор юнного лучника
А вам понравились проперти с функциональными стрелочками для обявление геттера? Хотите еще? их есть у меня!
опять блин перл. (хотя ларри волл признавался что он это из ады передрал.)
мало кто осознаёт, но это просто гениальная фича когда надо с кучей цифровых констант работать.
> ??
опять перл. только оригинальный синтакс это `||` или `or` или новый `//`
к слову тоже из перла. но только синтакс там извратный - с рефами/глобами надо извращатся, что бы сделать алиас на значение внутри массива/хэша. потому что переменная это просто "указатель" на значение, а массив это массив значений. и ничего не мешает к одному из значений массива еще одну переменную приклеить.
или еще более древняя отсылка - если не ошибаюсь - лисп: там тоже переменная и значение это две разные вещи, и ими можно тоже извращатся.
практически подобие этого достигается только референсами - но они инвалидируются когда оригинальная переменная умирает. в С/С++ референс показывает в UB, в перле/лиспе значение продолжает жить, пока на него что-то ссылается.
Причём здесь "переменные", зачем ты их придумал? Код в примере ссылается на ту память, которую ему передали, а не какую-нибудь там переменную на стеке. Вот аналогичный пример из 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/
Кигги, видимо, думает что мпссив передается по знчению и живет в стеке
Но в нете массив живет в куче, а теье просто дали на него ссылку
__reftype
__refvalue
А сейчас видимо тупо довели синтаксис до ума.
а имплементация все равно через .опу
Это уже не шарп, нахуй, это хаскель, блядь! - крикнет кто-нибудь и будет относительно прав. В 6 шарпе уже были некоторые предпосылки к такому развитию событий. Функиональшины было не так много, но она была скрученна в язык так, что не вызывала блевотные позывы при использовании. и это хорошо - подумали дизайнеры языка, и обмазали шарпеев функиональщиной с ног до головы. Пока данные изменения вызывают исключительно положительные эмоции, а что будет дальше - покажет время.
Всем сладких лямбд!
во первых - перл. во вторых - я уверен что паттерн матчинг в шарее будет лучше чем в хацкеле работать.
// Пишу из опенспейса о наболевшем.
Повезло ему, могла ведь и пятая достаться.
Это где нормальную модель памяти ещё не завезли?
Ну и как тебе NieR: Automata
Она ж где-то 10 дней назад всего вышла... Нестыковочка. Или ты про рай для оплаты за строки?
> 150 тайтлов
/0
10 тленов и безысходностей из 10.
This cannot continue.
Ты не поверишь, но уже большинство тем, кто о неё знает, перешли.
Профессор в отпуске, поэтому не сможет ознакомиться с Вашими пёрлами.
"пацаны!.. пацаны!!.. у них даже лошадь есть!"
Интересно, жив ли еще дефекате?