Size: a a a

2020 November 02

IG

Ilya Goncharov in Kotlin JS
Окей, спасибо
cc @bashorov
источник

VS

Vladimir Sitnikov in Kotlin JS
Ilya Goncharov
Для уточнения, в чистом js получается такой возможности нет вообще?
То есть только полностью писать функцию без лямбд?
Пример из Playwright:

const dimensions = await page.evaluate(() => {
   return {
     width: document.documentElement.clientWidth,
     height: document.documentElement.clientHeight,
     deviceScaleFactor: window.devicePixelRatio
   }
 });
 console.log(dimensions);


Пример из Puppeteer:

await page.evaluate(() => window.open('https://www.example.com/'));
источник

VS

Vladimir Sitnikov in Kotlin JS
Ilya Goncharov
Окей, спасибо
cc @bashorov
Но, честно говоря, не знаю что тут Kotlin/JS должно сделать для библиотечных вызовов.
Например, если в Kotlin написать какой-нибудь sequence, то в контексте браузера оно навернётся.
Как бы красота filter-map-Kotlin-flatMap пропадает :’-(
источник

ZB

Zalim Bashorov in Kotlin JS
в общем случае, crossinline тут не поможет
источник

ZB

Zalim Bashorov in Kotlin JS
Интересующие могут следить/голосовать за https://youtrack.jetbrains.com/issue/KT-41970
источник

с#

саша сок #KotlinGang... in Kotlin JS
Zalim Bashorov
в общем случае, crossinline тут не поможет
ну в моём случае поможет, т.к. я просто оборачиваю лямбду и кроссинлайн эту лямбду инлайнит
источник

с#

саша сок #KotlinGang... in Kotlin JS
почему тут варны блин, мне надоедает сюпрессить, оно же расширения на динамике не видит
источник

с#

саша сок #KotlinGang... in Kotlin JS
саша сок #KotlinGang
почему тут варны блин, мне надоедает сюпрессить, оно же расширения на динамике не видит
line: 10
источник

ZB

Zalim Bashorov in Kotlin JS
саша сок #KotlinGang
ну в моём случае поможет, т.к. я просто оборачиваю лямбду и кроссинлайн эту лямбду инлайнит
если в окружении где запускается скрипт не будет kotlin.js будут возникать проблемы с декларациями из stdlib, причем что-то может быть зиспользованно невно (рантйм поддержка).
источник

с#

саша сок #KotlinGang... in Kotlin JS
вот в js варарги для лямбд есть (потому что там нет отличия лямбды от функции), а в котлине нет и мне для каждой вариации придётся писать новый external
источник

AN

Alexander Nozik in Kotlin JS
саша сок #KotlinGang
вот в js варарги для лямбд есть (потому что там нет отличия лямбды от функции), а в котлине нет и мне для каждой вариации придётся писать новый external
Зачем? Сделайте массив
источник

с#

саша сок #KotlinGang... in Kotlin JS
Alexander Nozik
Зачем? Сделайте массив
оно не кастится
источник

AN

Alexander Nozik in Kotlin JS
саша сок #KotlinGang
оно не кастится
откуда куда?
источник

с#

саша сок #KotlinGang... in Kotlin JS
Alexander Nozik
откуда куда?
в плане там всё равно к первому аргументу лямбды делается unchecked cast и там тип Array, но на самом деле там лежит не Array, а первый аргумент
источник

AN

Alexander Nozik in Kotlin JS
саша сок #KotlinGang
в плане там всё равно к первому аргументу лямбды делается unchecked cast и там тип Array, но на самом деле там лежит не Array, а первый аргумент
Ну так надо не пихать варарги во внешний апи
источник

с#

саша сок #KotlinGang... in Kotlin JS
Alexander Nozik
Ну так надо не пихать варарги во внешний апи
ну это не ко мне же вопрос, а к nodejs библиотеке
источник

AN

Alexander Nozik in Kotlin JS
саша сок #KotlinGang
ну это не ко мне же вопрос, а к nodejs библиотеке
она же на JS, она варарги от массивов не отличает
источник

с#

саша сок #KotlinGang... in Kotlin JS
там задумка то хорошая

fun evaluate(handler: (vararg args: Any?) -> Unit, vararg args: Any?)

и все аргументы становятся доступны из браузера
источник

с#

саша сок #KotlinGang... in Kotlin JS
Alexander Nozik
она же на JS, она варарги от массивов не отличает
я не знаю, но я делал через Array<dynamic>, но по факту при console.log там лежал первый аргумент
источник

AN

Alexander Nozik in Kotlin JS
саша сок #KotlinGang
я не знаю, но я делал через Array<dynamic>, но по факту при console.log там лежал первый аргумент
А, все, понял. да, не массив. Ну не знаю, как это сделать. я не думаю, что варарг в варарг получится перевезти. А в голом JS разве есть варарг?
источник