Ilya
К тому же init отдельно от рекордов
Ayrat
ладно, это наверное очень полезно!
Ilya
new WeatherObservation { RecordedAt = DateTime.Now, TemperatureInCelsius = 20, PressureInMillibars = 998.0m };
Ayrat
чем кстати это отличается от конструктора?
Ilya
И как это под капотом работает?
В рекордах делается копия и сетается свойство
Ilya
В не рекордах просто можно задать значение только в object initializer
Ilya
Без копии
Vasiliy
о щас мясо будет
Vasiliy
рекодры в c#!
Ilya
Просто класс
Ayrat
рекодры в c#!
не, рекорды охуенно инит проперти - я не понял
Ilya
public struct WeatherObservation { public DateTime RecordedAt { get; init; } public decimal TemperatureInCelsius { get; init; } public decimal PressureInMillibars { get; init; } public override string ToString() => $"At {RecordedAt:h:mm tt} on {RecordedAt:M/d/yyyy}: " + $"Temp = {TemperatureInCelsius}, with {PressureInMillibars} pressure"; }
Vasily
В рекордах делается копия и сетается свойство
И чем это отличается от вызова конструктора?
Ayrat
это же рекорд с методом
Ayrat
нахуя этот бойлерплейр
Ilya
это же рекорд с методом
Это пример с мсдн
Ayrat
Это пример с мсдн
охуенно, спрошу тебя - это рекорд. почему нельзя написать нормаль?
Vasily
Чую, Илья может случайно проиграть этот спор
Vasily
Учитывая историю рекордов
Ayrat
record WeatherObservation( DateTime RecordedAt, decimal TemperatureInCelsius, decimal PressureInMillibars) { public override string ToString() => $"At {RecordedAt:h:mm tt} on {RecordedAt:M/d/yyyy}: " + $"Temp = {TemperatureInCelsius}, with {PressureInMillibars} pressure"; }
Ayrat
и смотри, еще меньше говнокода получилось
Ayrat
праймари КОНСТРУКТОР и погнали
Ayrat
и пользуешься конструктором
Vasily
@ilchert , прежде чем вступать в споры, рекомендую все же ознакомиться с фактологической базой, на которую опирается оппонент
Ayrat
котлин?
сишуруп9
Ayrat
там же рекорды с праймари конструктором дали
Sergey
я прост недотнетчик хз че там добавили )
Ayrat
ну вот наконец добавили
Ilya
охуенно, спрошу тебя - это рекорд. почему нельзя написать нормаль?
Потому что это пример, но вообще у тебя энтерпрайз и это просто класс с логикой и ты хочешь ещё свойство, которое должно быть инициализировано
Ayrat
для этого и сделали конструктор же...
Igor
котлин?
Java 14 😉
Ilya
добавь его в конструктор?
И его потом матчить по имени
Ilya
Заебись логика
Ayrat
И его потом матчить по имени
не понял. кого матчить?
Ayrat
а проперти не надо будет матчить в рефлексии?
Ilya
не понял. кого матчить?
Ну как мне связать параметр конструктора со свойством?
Ilya
Снаружи класса
Ilya
Тебе компилятор подставляет свойства объекта
Ayrat
а, я тебя понял. но это делается по-другому. То что появляется в праймари конструкторе делается пропертями - как в рекордах - автоматом
Doge
@omgszer @vshapenko @ilchert Вот вам и рекорды шарповые с init
Doge
https://twitter.com/Tyrrrz/status/1342077569622044673?s=09
Ilya
сделай
Разве можно писать код в праймари конструкторах?
Vasiliy
пиздец
Там завели баг уже на это.
Doge
Там завели баг уже на это.
Это все равно показатель того, что дизайн на инит - это какой-то бред
Ayrat
Разве можно писать код в праймари конструкторах?
ну в фшарпе можно type C(a: int) = do printfn "%d" a member val A = a with get https://sharplab.io/#v2:DYLgZgzgPg9gDgUwHYAIDKBPCAXBBbAWAChsNEUBhACgEMQUBLJbAShQF5iUUATGFOACcm2MKgBEAUh7iUNLijz4ARgkEoAbjWAoAghzkoA7g2wALFAHME2IA===
Ayrat
код в теле типа будет выполнен на праймари конструкторе
Ayrat
Это все равно показатель того, что дизайн на инит - это какой-то бред
я до сих пор понять не могу какую проблему он решает
Vasily
https://twitter.com/Tyrrrz/status/1342077569622044673?s=09
Хороший пример, годный
Ayrat
мне кстати дизайн котлина (и вроде скалы) на праймари конструкторе больше нравится Kotlin data class Foo(private val a: Int) // приватное поле data class Foo(val a: Int) // публичное иммутабельное data class Foo(var a: Int) // публичное мутабельное Scala case class Foo(a: Int) // приватное поле case class Foo(val a: Int) // публичное иммутабельное case class Foo(var a: Int) // публичное мутабельное
Doge
я до сих пор понять не могу какую проблему он решает
Насколько я помню, проблему того, что разрабы кучи либ до сих пор не умеют дружить с конструкторами.
Vasily
Я больше скажу
Vasily
Многие из них не подозревают о существовании фшарпа
Vasiliy
хм, слушайте может init нужен для сериализации\десериализации?
Vasily
Нет
Doge
хм, слушайте может init нужен для сериализации\десериализации?
Ничего не мешает работать с конструктором и свойствами в таких случаях
Vasily
Для system.text.json до 5 версии
Внимание, вопрос
Vasily
Как ты думаешь, когда эти проекты переедут на рекорды?
Ayrat
я вот не понял какие проблемы юзать конструктор
Ayrat
потому что НУТОНСОФТ тыщу лет так делал
Ayrat
и все работало
Ilya
Версия языка на связана с рантаймом
Vasily
Илья, к сожалению, отличается отсутствием критического мышления
Ilya
А 5 дотнет все таки не лтс
Vasiliy
.net 6 lts, потом народ начнет узнавать про рекорды