如何在AssemblyScript / Near中打印数组的长度?

Ish*_*ael 5 assemblyscript nearprotocol

我正在附近使用简单的汇编脚本进行实验,似乎无法找到一种打印数组长度的方法。这是最小的复制品:

  let a = new Array<string>();
  logging.log(a.length.toString());
Run Code Online (Sandbox Code Playgroud)

不与

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

   logging.log(a.length.toString());
                        ~~~~~~~~
 in assembly/main.ts(171,23)
Run Code Online (Sandbox Code Playgroud)

虽然toString()明显存在于上i32,例如以下代码段可以编译和运行:

  let a: i32 = 5;
  logging.log(a.toString());
Run Code Online (Sandbox Code Playgroud)

ber*_*guy 6

问题是Assemblyscript类型解析器无法解析某些类型的表达式,但是此问题已在上游Assemblyscript中的https://github.com/AssemblyScript/assemblyscript/pull/726中修复。更新编译器时,我们将针对智能合约修复此问题。现在,解决方法是使用一个临时变量:

let a = new Array<string>();
let l = a.length;
logging.log(l.toString());
Run Code Online (Sandbox Code Playgroud)