gavr_sas – Telegram
gavr_sas
216 subscribers
2.68K photos
185 videos
28 files
788 links
JB пропаганда
Download Telegram
А так можно снести это говно и поставить pipewire
sudo pacman -Rdd pulseaudio jack2 pulseaudio-bluetooth
sudo pacman -S pipewire-{jack,alsa,pulse}
restart
А панталоджик на англе, скажем так воспринимается по другому

Куда более брутально
This media is not supported in your browser
VIEW IN TELEGRAM
Комбинация alt+shift+стрелки это смарт выделение, которое по очереди выделяет области в которых курсок
гривистый волк, одновременно похож на волка лисицу и собаку, никогда не нападает на человека
👍1
не забывайте периодически подкармливать свою fate
В какой игре вы можете найти преступника, вырезать ему мозг(хотя ему нужна операция на брюхе), получить вот такую замечательную заметку в дневнике, и потом продать его на черном рынке?
Закупаем, докупаем, фиксируем прибыль
Такс, сегодня лайв текст стрим интересных отличий котлина
1) объявление классов, параметры конструктора идут просто в круглых скобках, сам конструктор объявляется через init
2) new не нужно, как и в Dart, как и во всех языках отделяющих типы от классов
3) можно писать val перед идентами в круглых скобках, чтобы сразу проинициализировать эти значения полученный из конструктора, а не делать this.x = x как в шарпах, жабе
4) классы по дефолту final, то есть их нельзя наследовать, СПАСИБО
5) все поля по дефолту public, так что не нужно писать public!!!
чтобы сделать класс наследуемым нужен модификатор open или sealed(наследуемый только в этом пакете, а не пользователем твоей либы)
6) есть ADT и exhoustive матчинг через when, внутри веток которого типы сужены до проверяемых, так что кастить руками не нужно
7) функции можно объявлять сокращенно если они состоят из одногоэкспрошона как в C#, а ифы и свитчи являются экспрешоннами, так что можно делать вот такую красоту
8) типа Void нет, все функции возвращают Unit, это пустой объект без полей
9( никакой структурной типизации нет, но по крайней мере есть возможность создавать анонимные объекты на месте, может пригодится для взаимодействия с JSON.
Можно унаследовать этот анонимный объект на месте от чего то другого и сразу же оверрайднуть его проперти, тогда будет норм
Залип в эту репу
https://github.com/arnobl/structural-typing-examples

Я вообще люблю залипать в репы где одно и тоже реализовано на разных языках для сравнения(у меня и своя такая есть). Вот тут смолтолк все равно самый красивый.
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) Объекты объявленные на верхнем уровне вложенности это фактически синглтоны, можно объявить компаньен обджект внутри класса, тогда это по сути его статические переменные.