Welcome to C# 9.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 20.05.20 18:13
Оценка: 66 (5) +1
Welcome to C# 9.0

Про рекорды
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9
и солнце б утром не вставало, когда бы не было меня
Отредактировано 16.09.2020 16:18 Serginio1 . Предыдущая версия . Еще …
Отредактировано 15.09.2020 11:00 Serginio1 . Предыдущая версия .
Re: Welcome to C# 9.0
От: Shmj Ниоткуда  
Дата: 20.05.20 18:30
Оценка: +10 -1 :)
Здравствуйте, Serginio1, Вы писали:

S>Welcome to C# 9.0


Горшочек не вари!
Re: Welcome to C# 9.0
От: AlexRK  
Дата: 20.05.20 18:42
Оценка: +10 -3
Здравствуйте, Serginio1, Вы писали:

S>Welcome to C# 9.0


Вроде и есть полезные штуки, но как-то все убого. Как кусок дерьма, присыпанный сахаром.

Почему "data class", а не просто "record"?

"public data class Person { string FirstName; string LastName; }" и "public data class Person(string FirstName, string LastName)". Не хватает еще "public data class Person [ string FirstName string LastName ]".

Магия и сахар для top-level инструкций.

">= 3000 and <= 5000 => 10.00m" — нечитаемый кусок дерьма, плюс появились "and", "or", "not". Конгениально.
Re[2]: Welcome to C# 9.0
От: Mystic Artifact  
Дата: 20.05.20 18:50
Оценка: +1 -1
Здравствуйте, AlexRK, Вы писали:

ARK>Почему "data class", а не просто "record"?

Например, потому что это таки class, хоть и присыпанный сахаром. На мой вкус в троице class, struct и record — последний лишний, потому что и class и struct являются record.
Re[3]: Welcome to C# 9.0
От: AlexRK  
Дата: 20.05.20 18:55
Оценка: +1
Здравствуйте, Mystic Artifact, Вы писали:

ARK>>Почему "data class", а не просто "record"?

MA> Например, потому что это таки class, хоть и присыпанный сахаром. На мой вкус в троице class, struct и record — последний лишний, потому что и class и struct являются record.

В тексте используется _исключительно_ терминология "record", а словосочетание "data class" встречается _только_ в сниппетах кода. Какой мудрый ход со стороны микрософта — называть в коде сущность одним именем, а в документации — другим. Разве это не прекрасно?
Re[4]: Welcome to C# 9.0
От: Mystic Artifact  
Дата: 20.05.20 19:01
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>В тексте используется _исключительно_ терминология "record", а словосочетание "data class" встречается _только_ в сниппетах кода. Какой мудрый ход со стороны микрософта — называть в коде сущность одним именем, а в документации — другим. Разве это не прекрасно?


Единой терминологии на этот счет нет нигде. В мире около ФП и хипсиеров record используется именно так. В классике жанра — record это просто составной тип. Поэтому, честно говоря наскоро пролистал всю статью, понял о чем они и закрыл. В принципе не плохо, на мой взгляд.

PS: Улучшенный паттернматчинг местами переулучшен.
Re[5]: Welcome to C# 9.0
От: AlexRK  
Дата: 20.05.20 19:11
Оценка: +6
Здравствуйте, Mystic Artifact, Вы писали:

ARK>>В тексте используется _исключительно_ терминология "record", а словосочетание "data class" встречается _только_ в сниппетах кода. Какой мудрый ход со стороны микрософта — называть в коде сущность одним именем, а в документации — другим. Разве это не прекрасно?


MA> Единой терминологии на этот счет нет нигде.


Это понятно, но не в рамках одного языка же. Шизофрения какая-то, в тексте "record", в коде "data class".

Да и, откровенно говоря, само словосочетание "data class" мне кажется убогим. Какая разница, класс это на самом деле или нет. Делегаты тоже классы, почему бы не назвать их "callable class"?
Re: Welcome to C# 9.0
От: nikov США http://www.linkedin.com/in/nikov
Дата: 20.05.20 19:26
Оценка: +2 :)
Здравствуйте, Serginio1, Вы писали:

S>Welcome to C# 9.0


Синтаксис впечатляющий:

    < 3000 => 10.00m - 2.00m,
    >= 3000 and <= 5000 => 10.00m,
    > 5000 => 10.00m + 5.00m,
Re[2]: Лигатуры
От: Qbit86 Кипр
Дата: 20.05.20 19:52
Оценка: 9 (3) -1 :))) :))
Здравствуйте, nikov, Вы писали:

N>Синтаксис впечатляющий:


В шрифте с лигатурами нормально:
http://prntscr.com/skm9mh
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: Лигатуры
От: Jack128  
Дата: 20.05.20 21:18
Оценка:
Здравствуйте, Qbit86, Вы писали:

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


N>>Синтаксис впечатляющий:


Q>В шрифте с лигатурами нормально:

Q>http://prntscr.com/skm9mh

ИМХО — та же байда.
А вот если так отформатировать, то уже более менее:

    < 3000              => 10.00m - 2.00m,
    >= 3000 and <= 5000 => 10.00m,
    > 5000              => 10.00m + 5.00m,
Re[4]: Лигатуры
От: kov_serg Россия  
Дата: 20.05.20 23:51
Оценка:
Здравствуйте, Jack128, Вы писали:

J>ИМХО — та же байда.

J>А вот если так отформатировать, то уже более менее:

J>
J>    < 3000              => 10.00m - 2.00m,
    >>= 3000 and <= 5000 => 10.00m,
    >> 5000              => 10.00m + 5.00m,
J>

Еще пару редакций и будет полноценный perl
Re: Summer of Code ...
От: hi_octane Беларусь  
Дата: 21.05.20 02:09
Оценка: +3 :)
… случайно смержили в релиз — Как-то иначе эти нововведения объяснить сложно.

Сделать одну фундаментальную фичу макросы — и вот эти "нововведения" запилит студент в корридоре кампуса на стажировке. Собственно от "топовых" новинок именно такое ощущение. Если бы это выкатили пакетом в NuGet — не факт что я бы его подключил.

Ну и конечно фичи есть куда развивать. Явно нехватает двух вещей: value-type records это раз. И скобочек на клавиатуре для них это два.

Предвижу проблему с logical patterns. Они поддерживают туплы?!
(a, b) switch
{
   (<10 and >5, >10) => WriteLine("J это C#12!");
}

Пока лютую дичь написать нельзя, есть ещё над чем работать и куда расти!

И только Covariant returns штука хорошая, даст возможность выкинуть куски повторяющегося и тупого кода.
Re[2]: Welcome to C# 9.0
От: Mr.Delphist  
Дата: 21.05.20 08:33
Оценка: -1
Здравствуйте, AlexRK, Вы писали:

Налицо явный многолетний тренд на возрождение Паскаля. Дочитал до "with" и аж вздрогнул. А так — чувствуется лютое влияние Kotlin и Swift (читай — стараются не отставать от Google и Apple).
Re[3]: Welcome to C# 9.0
От: AlexRK  
Дата: 21.05.20 08:49
Оценка: 7 (2) +4
Здравствуйте, Mr.Delphist, Вы писали:

MD>Налицо явный многолетний тренд на возрождение Паскаля. Дочитал до "with" и аж вздрогнул. А так — чувствуется лютое влияние Kotlin и Swift (читай — стараются не отставать от Google и Apple).


Лично я не считаю, что паскаль — это плохо (даже считаю наоборот, но это неважно). Плохи бессистемность и эклектичность. Раз уже есть && и || — так делайте дальше в том же стиле, а не пихайте and/or. Та же байда с == и equals и многим другим. Получается уродливое месиво — тут си, тут паскаль, тут рыбу заворачивали. Логика, последовательность? Какое там. "Запомнытэ это, дэти, потому что понять это — нэвозможно!" (с)
Re[3]: Welcome to C# 9.0
От: varenikAA  
Дата: 21.05.20 09:32
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

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


ARK>>Почему "data class", а не просто "record"?

MA> Например, потому что это таки class, хоть и присыпанный сахаром. На мой вкус в троице class, struct и record — последний лишний, потому что и class и struct являются record.
В F# под record принято понимать сравнение по значению и невозможность инициализации null-ами(если это не указано специально).
Может поэтому*
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[4]: Welcome to C# 9.0
От: hi_octane Беларусь  
Дата: 21.05.20 09:50
Оценка:
ARK>Раз уже есть && и || — так делайте дальше в том же стиле, а не пихайте and/or.
Подозреваю что они отказались от && и || потому что если писать с ними качественный продакшен код:
  >= 3000 && <= 5000 => 10.00m,
  < 3000 || > 5000 => 10.00m + 5.00m,

можно сломать и ихний машинный парсер и нашый человечий
Re[4]: Welcome to C# 9.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 21.05.20 10:06
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Лично я не считаю, что паскаль — это плохо (даже считаю наоборот, но это неважно). Плохи бессистемность и эклектичность. Раз уже есть && и || — так делайте дальше в том же стиле, а не пихайте and/or. Та же байда с == и equals и многим другим. Получается уродливое месиво — тут си, тут паскаль, тут рыбу заворачивали. Логика, последовательность? Какое там. "Запомнытэ это, дэти, потому что понять это — нэвозможно!" (с)


А мне нравится! Могли и сразу ввести and, or and not вместо && и || и ! перекурочили бинарные (& и | и ~)
Просто в паскале and, or and not применяется к булевым и числовым по разному. А здесь наследственность понимаетели.
Правильным путем идем товарищи!
и солнце б утром не вставало, когда бы не было меня
Отредактировано 25.05.2020 11:46 VladD2 . Предыдущая версия .
Re: Welcome to C# 9.0
От: halo Украина  
Дата: 21.05.20 10:12
Оценка: :))
Здравствуйте, Serginio1, Вы писали:

S>Welcome to C# 9.0


Шарп упорно соревнуется с самим собой в том, сколько одних и тех же по своей сути вещей можно сделать разными способами.

> Target-typed new expressions

> new expressions in C# have always required a type to be specified (except for implicitly typed array expressions). Now you can leave out the type if there’s a clear type that the expressions is being assigned to.
>
> Point p = new (3, 5);

Point p(3, 5); уже можно записать, или это кандидат в 10.0?
Re[2]: Welcome to C# 9.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 21.05.20 10:18
Оценка:
Здравствуйте, halo, Вы писали:


>> Point p = new (3, 5);


H>Point p(3, 5); уже можно записать, или это кандидат в 10.0?


В 16.7 https://devblogs.microsoft.com/visualstudio/visual-studio-2019-v16-6-and-v16-7-preview-1-ship-today/
и солнце б утром не вставало, когда бы не было меня
Re[5]: Welcome to C# 9.0
От: AlexRK  
Дата: 21.05.20 11:11
Оценка: +1 -2
Здравствуйте, hi_octane, Вы писали:

_>Подозреваю что они отказались от && и || потому что если писать с ними качественный продакшен код:

_>
  >>= 3000 && <= 5000 => 10.00m,
_>  < 3000 || > 5000 => 10.00m + 5.00m,
_>

_>можно сломать и ихний машинный парсер и нашый человечий

Ну понятно, что написать что-то вроде:
(value >= 3000) && (value <= 5000) => 10.00m,
(value < 3000) || (value > 5000) => 10.00m + 5.00m,

— это не судьба.

Что за тупые ублюдки там язык дизайнят?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.