gavr_sas
Залип в эту репу https://github.com/arnobl/structural-typing-examples Я вообще люблю залипать в репы где одно и тоже реализовано на разных языках для сравнения(у меня и своя такая есть). Вот тут смолтолк все равно самый красивый.
Чето я увлекся, реализовал функциональную версию в доказательство что ADT круче OOP
P.S. да, типы выводятся из возвращаемых анонимных объектов функций new*
P.S. да, типы выводятся из возвращаемых анонимных объектов функций new*
gavr_sas
9( никакой структурной типизации нет, но по крайней мере есть возможность создавать анонимные объекты на месте, может пригодится для взаимодействия с JSON. Можно унаследовать этот анонимный объект на месте от чего то другого и сразу же оверрайднуть его проперти…
10) А вот сейчас важно, инлайн функции котлина, это почти что темплейты нима, они инлайнятся по настоящему, в кт, и ретурн оттуда это non local return который вернет из функции в которую был инлайн. Это позволяет реализовать например тот же
Все лямбды принятые в inline функцию тоже inline, чтобы сделать наоборот нужно добавить модификатор
lock statementВсе лямбды принятые в inline функцию тоже inline, чтобы сделать наоборот нужно добавить модификатор
notinline12) Такс, а теперь самая сложная часть моего котлин "доклада", DSL
Для понимания создания DSL нам нужно немножно других фактов
1) В котлине можно перегружать у объектов оператор вызова
5) Тут есть функции расширения, ага как в ниме и C#, любой тип можно расширить своей функций, синтаксис у этого такой
Для понимания создания 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) перегружаем у класса invoke оператор,
2) передаем туда лямбду
3) пускай эта лямбда принимает Функцию Расширения! этого же класса!!!
Так как этот перегруженные оператор invoke принимает только лямбду и никаких больше аргументов, мы можем вызывать его без круглых скобок
Так как лямбда которую он принимает является расширением класса его самого, то внутри этой лямбды мы имеем доступ к полям этого класса.
👍1
Такс, а теперь о действительно важном.
Собираем все шесь неиспользованных горбушек, потому что они не влезают в тостер, в одну, режем на кубики, в отдельной миске смешиваем базелик, выдавленный чеснок, паприку, красный черный перец и соль.
0) высыпаем смесь в хлеб и смешиваем
1) кидаем хлеб на сухую! сковородку
2) ждем пока хлеб высохнет минут 7
3) раскидываем кубики сливочново в разные стороны сковородки и перемешиваем шоб получить корочку, если не хватает можно подлить подсолнечного.
Готово, закуска богов за 15 минут и старой неиспользованной булки
Собираем все шесь неиспользованных горбушек, потому что они не влезают в тостер, в одну, режем на кубики, в отдельной миске смешиваем базелик, выдавленный чеснок, паприку, красный черный перец и соль.
0) высыпаем смесь в хлеб и смешиваем
1) кидаем хлеб на сухую! сковородку
2) ждем пока хлеб высохнет минут 7
3) раскидываем кубики сливочново в разные стороны сковородки и перемешиваем шоб получить корочку, если не хватает можно подлить подсолнечного.
Готово, закуска богов за 15 минут и старой неиспользованной булки
👍1
Чеерт, котлин украл из моего языка идею универсального котнрол флов оператора. Их when можно использовать как ряд if elsoв делая по условию в каждой ветке, или как около паттерн матчинг, с ИЛИ вариантами через запятую.
Угадайте где еще можно также
Угадайте где еще можно также
Гайд по пополнению запаса, берем панталоджик или любую игру с кучей диалогов(еще советую Sunless Sea и Skies), Записываем все неясные слова в отдельный блокнотик. Пишем прогу на любимом языке которая будет проверять ваши знания блокнотика.
Чел делает маленькие компутактеры в странных формфакторах https://youtu.be/eR3kf-nUY-s