如何在 AssemblyScript 中编写 printf() 函数?

How do I write a printf() function in AssemblyScript?

我主要需要这个来记录我需要传入任意参数(整数浮点数、对象)的地方。

一个解决方案是写

let i:i32 = 1;
let f:f32 = 1.1;
log ("Message "+i.toString()+" "+f.toString())

写起来很笨拙和冗长。

还可以有多个日志功能,又是尴尬

log_i (msg:string, i:i32);
log_i2 (msg:string, i:i32, i2:i32);
log_f (msg:string, f:f32);
etc

您似乎不能拥有同时包含 i32、f32 和对象的通用数组。所以甚至不确定如何传入可变参数。也许我可以装箱,但没有自动装箱又很尴尬。

对于这个简单的用例,什么是好的解决方案?

只需使用 Typescript 样式模板字符串。

log (`Message ${i} and ${f}.`)

Assemblyscript 将自动生成 toString() 和字符串连接语句。

  1. 简洁明了
  2. 更具表现力的日志,而不是将所有参数放在最后。
  3. 没有笨拙的函数调用、可变参数等