- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
data class User(
@Expose
@SerializedName("email")
val email: String? = null,
@Expose
@SerializedName("username")
val username: String? = null,
@Expose
@SerializedName("image")
val image: String? = null
) {
override fun toString(): String {
return "User(email=$email, username=$username, image=$image)"
}
}
JetBrains сделали прекрасный стандартный toString у дата классов, а они всё равно пишут свой туСтринг, который выдаёт результат в точности повторяющий стандартный.
https://github.com/mitchtabian/MVIExample/blob/master/app/src/main/java/com/codingwithmitch/mviexample/model/User.kt
ШОК! Где-то на гитхабе есть автогенерённый бойлерплейт!
Написано же data class ⇒ по всей вероятности сгенерён из какого-нибудь xml- или json-описания api. Лежать будет в отдельном файле, делать в котором нехуй, нужен он линтеру и компилеру для тайпчекинга и среде для автодополнения. Желательно, чтобы ещё был помечен как автогенерённый, чтобы не трогал никто. Всё равно, когда версия апи поменяется, придёт новый файлик xml, по которому классы перегенерятся. Единственный минус такого кода, кроме его нахуй не нужности, как и ± большинства кода, написанного для продакшена, в том, что serialized name может отличаться от имени поля и предвещать кому-то мучительный дебаг, если уж кто-нибудь доберётся до того, чтобы трогать подобный бойлерплейт руками.
Ну там вот в соседнем файле есть ещё Тоже давайте порофлим.
Не понял, что по твоей ссылке должно было опровергнуть такую вероятность?
Для котлина невозможна кодогенерация?
А этот класс вообще-то можно записать в одну строчку, или аннтоации не накинуть будет? Не знаю, дефолтные ли это аннотации для котлиновского дата-класса.
Видимо, «Котлин» — это мой удел.
А «Скала»? Да что «Скала»? Вечно мне лгала.
И меня никогда понять бы не смогла.
А «Котлин» всё спиздил у «Скалы».
Вот «Скала», и вот её не стало.
И когда об этом вдруг узнаешь ты...
В С++ этого как-то не хватало, сейчас вроде вводят...
Когда он видит класс из одной строчки, у него начинает дергаться глаз.
Он берет, и пишет над полем username.
Казалось бы, зачем? Это ведь и так понятно по рефлексии, но нет А в чём смысл ключегого слова "override", почему это происходит столь просто - подумаешь каст сменили, - и имеет длительные последствия! Едить-твою за ногу! Обратно-то некому кастануть!
Но теперь я даже пытался вчитаться в эти вореции.
Эти современные многомалостные вореции лень устанавливать. Скрипты какие-то. Сложна! Сложна! А старый скрипт так и остался, разве что вместе со всем разделом переехал на новый SSD.
Я специально поиском проверил что в треде не было начальной фразы.
>Я понял! Я теперь понял!
EDIT: OH SHI~. Просто он у меня скрыт.
Когда педофил растлевает ребенка или гей соблазняет натураста, он просто приводит его к другому типу!!! Вот, почему это происходит столь просто - подумаешь каст сменили, - и имеет длительные последствия! Едить-твою за ногу! Обратно-то некому кастануть!
"В чем отличие геев и натуралов"? Ответ - ни в чем, ведь базовый тип у них один.
JSON.stringify({pituh: "petya"}).toString()
Зачем? Зачем?
2. Чтобы получить ошибку времени выполнения, если на вход подали undefined.
>> JSON.stringify(undefined);
undefined
>> JSON.stringify(undefined).toString();
TypeError: JSON.stringify(...) is undefined
Починил, проверь.
Жаба под коричневым соусом.
Поэтому даже сейчас, соскочив на нейтив, они все равно выглядят как ёбаная скала и тащат туда говно из жвм, к которой отношения вроде бы уже и не имеют.
Какой reified )))
© Цинцзи пинь 4846 г. до н.э.
Не больно ли тебе?