Пожалуйста, извините, что я не знаю, должен ли я спрашивать обо всех основных типах в одном посте или отдельно.
Основные вопросы:
- Как передать массив с плавающей точкой из Kotlin в JS?
- Как насчет других "простых" типов? Как поплавок, строка?
- А как насчет других типов, таких как
set
, map
и даже классов данных?
У меня есть это в конце моего основного файла Kotlin
@SymbolName("callback")
external fun cb(<......>)
Если типы в определении cb()
соответствуют тому, что я передаю от main()
, например Int
, Float
, тогда cb()
из браузера получит правильные значения.
Если я использую Any
, то все, что я получу, это целое число (которое, я думаю, должно быть указателем на память).
Я пытался проверить heap
, но безрезультатно, как извлечь строки типа int, float,, которые я передал в cb()
через Kotlin.
Для массивов я заметил, что в jsinterop есть пакет JsArray
, но я не могу найти хорошие ссылки о том, как его использовать.
Одна вещь, которую я заметил, это то, что я могу получить массив целых чисел через Arenas:
val arena = allocateArena()
pushIntToArena(arena, 1)
pushIntToArena(arena, 12)
Тогда я получу массив через konan_dependencies.env.areans
.
Но как мне получить массив с плавающей точкой? Пожалуйста, сообщите.
P.S. Я использую плагин konan
в моем build.gradle
для компиляции в Wasm32. Я передаю callback
в Wasm, добавляя функцию к window.konan.libraries
в module.wasm.js
:
var konan = {
libraries: [
{ "callback": function(msg) { console.trace(msg); } }
],
}