- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
using KoKo.Property;
namespace MyProject {
public class Person {
private StoredProperty<string> FirstName { get; }
private StoredProperty<string> LastName { get; }
public Property<string> FullName { get; }
public Person(string firstName, string lastName) {
FirstName = new StoredProperty<string>(firstName);
LastName = new StoredProperty<string>(lastName);
FullName = DerivedProperty<string>.Create(FirstName, LastName, (first, last) => $"{first} {last}");
}
public void SetFirstName(string firstName) {
FirstName.Value = firstName;
}
}
}
Дампик.
Чтобы его типа кешировать?
> LastName = new StoredProperty<string>(lastName);
> FullName = DerivedProperty<string>.Create(FirstName , LastName, (first, last) => $"{first} {last}");
Автовывод генериков так и не завезли?
Такое даже в 7ой йаже быдло:
> LastName = new StoredProperty<>(lastName);
Настоящему джависту не влом написать одно и то же джва раза.
Давайте тогда в каждом выражении у каждой переменной тип повторять, чтобы всё явно было.
Последние исследования ученых говорят, что оптимально делать третье, бустерное упоминание типа.
Ну чтобы точно не ошибиться.
Вообще заебись. Я предлагаю при инициализации хотя бы писать.
Потом выяснится что половину auto можно не писать, их выведет компилятор.
В Стандарте ™ сделают фичу чтобы компилятор сам догадывался по названиям файлов, какой код там должен быть.
Будет кококмпилироваться в утилиту grep.
Будет кококмпилироваться в python3. Итд.
Жаль, Конрад Цузе так и не внедрил его.
https://ru.m.wikipedia.org/wiki/Планкалкюль
Почти, как ассемблер, только для ма-те-ма-ти-ков.
Уже после смерти Цузе реализовали трансляторы, изменив синтаксис на однострочный (типы стали писать в квадратных скобках).
Не успел помереть, а тут же язык испоганили.
«Иажа»
«Cщ»
«ТуреЗсгiрт»
Итд.
Почему анскильные няудачники ня могли зделать инициализаторы как в Сишке?
Ок, если так нравится «new», неужели сложно было запилить нормальный type inference?
Вообще-то в «Cщ» давно сделали
Beginning with C# 9.0, constructor invocation expressions are target-typed. That is, if a target type of an expression is known, you can omit a type name, as the following example shows:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/new-operator
вот почему diamond operator до сих пор не завезли - это вопрос
Лютая годнота. Как я и предвидел, усилился процесс всеобщей ява-скриптизации современных типизированных языков.
Сперва varы, потом автовывод, теперь облегчённые инициализаторы.
Всё закончится тем что компилируемые строготипизированные языки получат компактность божественной скриптухи вроде ECMAScipt-5.
Возможно вы имели в виду: хаскеллизации. Т.к. ЙАЖА-свитки — динамический язычок.
Но с императивностью и мутабельностью.
Хотя я бы и var тоже сделал опциональным и по умолчанию всё бы сделал константным, идеально вообще так:
константа = выражение
var перменная = выражение
цитата_Лироя_про_треды.txt
ну-ну
А вот вывод типов слева-направо уже сложнее читать без IDE т.к. может получиться говно в духе this.x = new (42, 100500). Хотя если не абузить, то вполне норм.
Ну нормально.
Вообще это удобно для всяких аргументов, названных йажистами:
Лучше бы именованные аргументы завезли, а не это костылище.
>List<int> ys = new(capacity: 10_000);
>List<int> zs = new() { Capacity = 20_000 };
Почему-то разный регистр у Capacity. Я понимаю что в одном случае поле, а в другом аргумент конь-структора. Но инкапсуляция тут хромает.
> именованные аргументы завезли
А разве это не они?
>new(capacity: 10_000);
Вообще никогда не забуду книжку Бьярне, где он аргументированно объяснял почему не завёз в Кресты именнованные аргументы.
Поскольку эта фича поощряет хуёвый стиль программирования. А в методах где 1-2 аргумента она только мешает.
И как раз поэтому жду когда их таки завезут в С++.
Да, у виндовых функций было бы по 40 аргументов вместо четырёх структур по десять...
Но лучше всего зделали в Сишке.
?
кстати, new в C# и JAVA говно и не нужно. Реально лишнее слово и семантический мусор
Ищем рифму к слову "сараситу". тараситу джираситу клораситу чампраситу бааситу кабаситу иаситу акаситу атакаситу йамаситу мимаситу уаситу накхаситу эаситу мангситу рангситу...
Фу.
https://www.ar15.com/forums/General/DuckDuckGo-gone-WOKE/5-2491000/
Там стена текста, а я жутко хочу спать.
Edit: А, въехал. Мультикультуралочка во все поля. ещё и резюме с ашипками. Охуенно!
Error 1020 Ray ID: 6c972f8f7b027b83 • 2022-01-06 18:59:50 UTC
Access denied
What happened?
This website is using a security service to protect itself from online attacks.
У них там хостинг на «Целероне» Тараса?
Человек с IQ выше легального возраста согласия такой платформой пользоваться не будет, ergo смотреть там нечего.
Ну ты бы наверно чаще попадал, если бы не требовали денег за просмотр
Вконец испоганили интернеты. А ведь было время, был контент, был стиль:
http://alina6665.narod.ru/poems.htm
PS: ох лол, они как минимум с 2018 спонсируют
https://www.youtube.com/watch?v=-wePMUqnBn0
какие же они там ебнутые, а
я бы застрелился, если бы в какой-то момент обнаружил, что несу такую хуету
Это два разных конструктора
> List<int> ys = new(capacity: 10_000);
Вызов конструктора с аргументом
> List<int> zs = new() { Capacity = 20_000 };
Вызов конструктора и выполнение блока инициализации после
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-initialize-objects-by-using-an-object-initializer
но в var options = new Dictionary<string, object>() { {"петухов", "пятнадцать, пожалуйста"} }, где тип очевиден, он конечно незаменим
Так var не нужен. С этой фичей получается компактнее.
Всё таки С++ лаконичнее современных языков