标签中带有 space 的 AssemblyScript 导出名称

AssemblyScript export name with space in its label

我需要导出一个指向函数的标签,例如

(func $can_sayhello (export "can sayhello") (type $t3)

我能得到的最接近的是:

 (export "can_sayhello" (func $assembly/index/can_sayhello))

使用这个 AssemblyScript

@external("can sayhello")
export declare function can_sayhello(): void;

我真正想做的是改变这个函数的标签


function sayhello() : void {
}
//output in wat
(export "sayhello" (func $assembly/index/sayhello))

成为

 (export "can sayhello" (func $assembly/index/sayhello))

我是汇编脚本的新手,我真的想不通,如果您有任何问题,请告诉我。

任何语言的函数名都带有空格是很不寻常的,但这是可能的!

我写了一个简单的转换过程,允许你有任何字符串用于命名导出。

在这里https://github.com/willemneal/visitor-as/blob/master/src/examples/exportAs.ts

您需要添加 visitor-as 作为项目的依赖项,然后在您的 asconfig.json 或 cli 中添加 exportAs 转换器。

例如

@exportAs("can sayhello")
export function main(): u32 {
  return 42;
}

然后像这样编译

asc assembly/index.ts --transform visitor-as/dist/examples/exportAs