1) Цель заменить вот этот if сделав аналог also, но с проверкой на нулл и сужением типа
2) Ну вроде ничего сложного, расширяем нуллабл дженерик тип T функцией ifNotNullDo, принимающей лямбду от не нуллабл T, и возвращающей нуллабл T.
Внутри просто выполняем полученную лямбду только если T не нулл.
3) Готово, тип внутри лямбды действительно сузился с String? до String. Помойму прям красота
#kotlin
2) Ну вроде ничего сложного, расширяем нуллабл дженерик тип T функцией ifNotNullDo, принимающей лямбду от не нуллабл T, и возвращающей нуллабл T.
Внутри просто выполняем полученную лямбду только если T не нулл.
3) Готово, тип внутри лямбды действительно сузился с String? до String. Помойму прям красота
#kotlin
quite good actually https://youtu.be/ErSmRD67pzo
YouTube
Discord in 2045:
Yesterday is history. Tomorrow is a mystery. But today is a gift... that's why it's called the present :)
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
follow me or i will bite you
• Twitter - https://twitter.com/beluga1000…
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
follow me or i will bite you
• Twitter - https://twitter.com/beluga1000…
👍1
Есть такая штука в котлине, инлайн классы, это классы с одним проперти, во всех местах использования сам класс будет опущен и будет использоваться только это поле чтобы избавится от оверхеда.
Вот я подумал что если совместить эту фичу с sealed, отнаследовав 2 таких инлайн класса от одного пустого потомка то можно получить настоящее или между двумя типами, вроде string | int, которое возможно в TS, но невозможно, да больше нигде вообщем то.
Но нет, к сожалению inline классы нельзя наследовать #kotlin
PS а вспомнил, это еще можно в Crystal
Вот я подумал что если совместить эту фичу с sealed, отнаследовав 2 таких инлайн класса от одного пустого потомка то можно получить настоящее или между двумя типами, вроде string | int, которое возможно в TS, но невозможно, да больше нигде вообщем то.
Но нет, к сожалению inline классы нельзя наследовать #kotlin
PS а вспомнил, это еще можно в Crystal
Но по крайней мере inline классы являются полноценным аналогам distinct типов нима. То есть вот хочу я сделать чтобы path было отдельным типом, не просто path: string, и пихнуть туда можно что угодно, а именно path: Path, но без оверхеда на класс/тип.
Вот inline классы это именно оно. #kotlin
Вот inline классы это именно оно. #kotlin
gavr_sas
Когда код писали ученые, это сразу бросается в глаза по их любви к матрицам
Сейчас вот думаю, а может это не такая уж плохая идея, вот есть 5 параметров, и от каждого из них как то меняется ответ, как это можно было сделать лучше, такой же пятимерной вложенностью ифов? Кода было бы сильно больше, а суть таже.