gavr_sas – Telegram
gavr_sas
216 subscribers
2.68K photos
185 videos
28 files
788 links
JB пропаганда
Download Telegram
gavr_sas
Залип в эту репу https://github.com/arnobl/structural-typing-examples Я вообще люблю залипать в репы где одно и тоже реализовано на разных языках для сравнения(у меня и своя такая есть). Вот тут смолтолк все равно самый красивый.
Чето я увлекся, реализовал функциональную версию в доказательство что ADT круче OOP
P.S. да, типы выводятся из возвращаемых анонимных объектов функций new*
gavr_sas
9( никакой структурной типизации нет, но по крайней мере есть возможность создавать анонимные объекты на месте, может пригодится для взаимодействия с JSON. Можно унаследовать этот анонимный объект на месте от чего то другого и сразу же оверрайднуть его проперти…
10) А вот сейчас важно, инлайн функции котлина, это почти что темплейты нима, они инлайнятся по настоящему, в кт, и ретурн оттуда это non local return который вернет из функции в которую был инлайн. Это позволяет реализовать например тот же lock statement
Все лямбды принятые в inline функцию тоже inline, чтобы сделать наоборот нужно добавить модификатор notinline
11) Объекты объявленные на верхнем уровне вложенности это фактически синглтоны, можно объявить компаньен обджект внутри класса, тогда это по сути его статические переменные.
12) Такс, а теперь самая сложная часть моего котлин "доклада", DSL
Для понимания создания DSL нам нужно немножно других фактов
1) В котлине можно перегружать у объектов оператор вызова () с помощью функции operator fun invoke
2) В котлине есть синт сахар как в ниме, если на последним аргументом функции идет лямбда то ее можно вызвать не как foo(a, {x -> toDo}), а как foo(a) {x -> todo}
3) если эта функция принимает только лямбду то можно опустить круглые скобки, если эта лямбда не принимает аргументов то можно опустить ->
foo { todo }
4) Разумеется это инлайн лямбда и все будет зерокост
5) Тут есть функции расширения, ага как в ниме и C#, любой тип можно расширить своей функций, синтаксис у этого такой
fun String.sas(): Int = 1
"sas".sas() == 1
👍1
gavr_sas
12) Такс, а теперь самая сложная часть моего котлин "доклада", DSL Для понимания создания DSL нам нужно немножно других фактов 1) В котлине можно перегружать у объектов оператор вызова () с помощью функции operator fun invoke 2) В котлине есть синт сахар как…
6) ИИИИ теперь внимание,
1) перегружаем у класса invoke оператор,
2) передаем туда лямбду
3) пускай эта лямбда принимает Функцию Расширения! этого же класса!!!

Так как этот перегруженные оператор invoke принимает только лямбду и никаких больше аргументов, мы можем вызывать его без круглых скобок

Так как лямбда которую он принимает является расширением класса его самого, то внутри этой лямбды мы имеем доступ к полям этого класса.
👍1
Такс, а теперь о действительно важном.
Собираем все шесь неиспользованных горбушек, потому что они не влезают в тостер, в одну, режем на кубики, в отдельной миске смешиваем базелик, выдавленный чеснок, паприку, красный черный перец и соль.
0) высыпаем смесь в хлеб и смешиваем
1) кидаем хлеб на сухую! сковородку
2) ждем пока хлеб высохнет минут 7
3) раскидываем кубики сливочново в разные стороны сковородки и перемешиваем шоб получить корочку, если не хватает можно подлить подсолнечного.
Готово, закуска богов за 15 минут и старой неиспользованной булки
👍1
Ват, и зачем тогда ему такое красивое название, в ниме это называется none
Вот теперь я чувствую насколько тяжелые сейчас делают сайты, вот ютуб например
В стенах завелись крысы, с плешью на лопатке
😢1
Впервые в жизни случайно посолил чай. С учетом того что я добавил всего чайную ложку и тем насколько соленой стала большая кружка чая задумался над тем насколько соль "концентрированнее", кажется для того же эффекта потребовалось бы штук 5 ложек сахара
Чеерт, котлин украл из моего языка идею универсального котнрол флов оператора. Их when можно использовать как ряд if elsoв делая по условию в каждой ветке, или как около паттерн матчинг, с ИЛИ вариантами через запятую.
Угадайте где еще можно также
Кто говорит что у npm миллиард зависимостей даже для хелло ворда и они долго скачиваются, вот хелло ворлд на бекенде ktor скачиваются тыщи пакетов уже 4 минуты
Гайд по пополнению запаса, берем панталоджик или любую игру с кучей диалогов(еще советую Sunless Sea и Skies), Записываем все неясные слова в отдельный блокнотик. Пишем прогу на любимом языке которая будет проверять ваши знания блокнотика.
Чел делает маленькие компутактеры в странных формфакторах https://youtu.be/eR3kf-nUY-s
LISP
4
"Adobe Photoshop retroactively blacks out previously saved .psd files unless you pay a new $21/mo subnoscription"
Юзать чтото от adobe в 2к22
🤡1