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

Posted

技术标签:

【中文标题】如何在 AssemblyScript / Near 中打印数组的长度?【英文标题】:How to print the length of an array in AssemblyScript / Near? 【发布时间】:2020-01-13 19:13:56 【问题描述】:

我正在附近尝试使用简单的汇编脚本,但似乎找不到打印数组长度的方法。这是最小的复制品:

  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,例如以下 sn-p 编译并工作:

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如何在 AssemblyScript / Near 中打印数组的长度?的主要内容,如果未能解决你的问题,请参考以下文章

使用纱线部署留言簿时,NEAR 上的 AssemblyScript:`/bin/sh:asb: command not found`

near-example/workshop--exploring-assemblyscript-contracts/assembly/A.sample-projects/04.token-contra

Near-example/workshop--exploring-assemblyscript-contracts/assembly/A.sample-projects/04.token-contra

NEAR,如何实现撤销(汇编脚本)

ReactJS 不从产品上的智能合约(NEAR)调用方法(查看时测试网不存在)

如何在 AssemblyScript 中使用 asc 编译 console.log("1")?