首页 > 解决方案 > 如何在 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());

标签: assemblyscriptnearprotocol

解决方案


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

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

推荐阅读