嘿,我对 AssemblyScript 还很陌生,不确定如何实现我想要的以及 AssemblyScript 是否已经支持这一点。 本质上,我试图将 AssemblyScript 编译为 Wasm 以部署到 ICP (DFINITY)。 他们有他们自己的语言 Motoko,他们有很好的支持,并且他们正在推出 Rust 和 C SDK。 我想我可以按照他们开放源代码的 C 示例之一将其用于 AssemblyScript。 这是我想要实现的目标: https :
我不完全理解那里的语法。 似乎 go 函数的导出名称被设置为“canister_update go”。 我如何在 AssemblyScript 中实现这一点? 我已成功编译我的 AssemblyScript 并将其部署到本地 ICP 节点,但现在我无法调用我的函数,因为我没有将其充分标记为容器更新函数。
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")
此问题已自动标记为过时,因为它最近没有活动。 如果没有进一步的活动发生,它将被关闭。 感谢您的贡献。