Assemblyscript: 导出的自定义名称

创建于 2020-10-01  ·  4评论  ·  资料来源: AssemblyScript/assemblyscript

嘿,我对 AssemblyScript 还很陌生,不确定如何实现我想要的以及 AssemblyScript 是否已经支持这一点。 本质上,我试图将 AssemblyScript 编译为 Wasm 以部署到 ICP (DFINITY)。 他们有他们自己的语言 Motoko,他们有很好的支持,并且他们正在推出 Rust 和 C SDK。 我想我可以按照他们开放源代码的 C 示例之一将其用于 AssemblyScript。 这是我想要实现的目标: https :

我不完全理解那里的语法。 似乎 go 函数的导出名称被设置为“canister_update go”。 我如何在 AssemblyScript 中实现这一点? 我已成功编译我的 AssemblyScript 并将其部署到本地 ICP 节点,但现在我无法调用我的函数,因为我没有将其充分标记为容器更新函数。

question stale

所有4条评论

AssemblyScript 仅支持通过@external(module, name)导入的自定义外部名称。 所以你可以做类似的事情:

@external("canister_update", "go")
export function go(): void {
  ...
}

但这目前不受 AS 支持。 但是您可以编写自定义转换例程,从而可以使用external装饰器进行导出。

如何使用transform有用示例:
https://github.com/AssemblyScript/examples/tree/master/transform
https://github.com/willemneal/visitor-as

并添加从以下转换而来的逻辑:

(func $go (export "go") (type $t1) (result i32) i32.const 1)

(func $go (export "canister_update go") (type $t1) (result i32) i32.const 1)

当导出的函数有@external("canister_update", "go")装饰器时

完美,所以我只需更改导出名称? 这就是我链接到的 C 示例所做的全部工作?

是的,它们只是将(export "go")替换(export "canister_update go")

此问题已自动标记为过时,因为它最近没有活动。 如果没有进一步的活动发生,它将被关闭。 感谢您的贡献。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jarble picture jarble  ·  3评论

kungfooman picture kungfooman  ·  5评论

pannous picture pannous  ·  4评论

torch2424 picture torch2424  ·  3评论

emil14 picture emil14  ·  3评论