я не нашёл крутого названия, но для юзербота самое то, чтобы отправлять сообщения, изменять их, делать реплаи в контексте юзера
типо
tgApi.withUser(userId) { implicit storage: Storage, implicit user: UserContext -> sendMessage("Привет") // UserContext - контекст пользователя, с которым общается бот, так что не надо указывать тут айдишник, кому отправлять сообщение val name = waitReply("Как вас зовут?") save("name", name) }
О, ваше каеф. Дивный мир, где всё глобальное и мутабельное 🤤
так им в жс надо. implicit это невный, там всё нах неявное.
function dosmth(( { storage, user } ) => { ... })
передавай что хочешь, забей на типы, даже на количество аргументов, запихиваешь в объект - найдётся такой ключ - ништяк, нет - ну ладно, зато гибко и неявно
О, ваше каеф. Дивный мир, где всё глобальное и мутабельное 🤤
понятное дело, что это может быть опасно, но то, что я скинул выше имхо норм. и то там с storage конечно вопросы есть, тут лучше его обычной переменной оставить. но у меня были потребности двух контекстов именно в лямбде, а сейчас у меня потребность вынести реализацию некоторых фич класса (логгер и ещё что-то) в классы-хелперы, но при этом я хочу методы этих классов видеть внутри методов моего класса
так им в жс надо. implicit это невный, там всё нах неявное.
function dosmth(( { storage, user } ) => { ... })
передавай что хочешь, забей на типы, даже на количество аргументов, запихиваешь в объект - найдётся такой ключ - ништяк, нет - ну ладно, зато гибко и неявно
так им в жс надо. implicit это невный, там всё нах неявное.
function dosmth(( { storage, user } ) => { ... })
передавай что хочешь, забей на типы, даже на количество аргументов, запихиваешь в объект - найдётся такой ключ - ништяк, нет - ну ладно, зато гибко и неявно
А если к этому добавить стати типизацию - получится #purescript с row-полиморфизмом