Как распечатать длину массива в AssemblyScript / Near?

Я экспериментирую с простыми скриптами сборки на ближнем и не могу найти способ распечатать длину массива. Вот самая маленькая репродукция:

  let a = new Array<string>();
  logging.log(a.length.toString());

Не компилируется с

ERROR TS2339: Property 'toString' does not exist on type 'i32'.

   logging.log(a.length.toString());
                        ~~~~~~~~
 in assembly/main.ts(171,23)

Пока toString() явно существует на i32, например, следующий фрагмент компилируется и работает:

  let a: i32 = 5;
  logging.log(a.toString());

1 ответ

Решение

Проблема в том, что преобразователь типа Assemblyscript не может разрешать определенные типы выражений, но эта проблема была исправлена ​​здесь https://github.com/AssemblyScript/assemblyscript/pull/726 в восходящем сценарии сборки. Мы исправим это для смарт-контрактов при обновлении компилятора. На данный момент обходным путем является использование временной переменной:

let a = new Array<string>();
let l = a.length;
logging.log(l.toString());
Другие вопросы по тегам