是否支持通过消息数据发送模块?如何实现字符串转模块?
实现方案
使用Pact内置的read-module函数即可完成字符串到模块类型的读取转换,该函数与read-decimal、read-integer、read-keyset、read-string同属消息载荷类型读取内置函数,专门用于处理模块类型的参数解析。
使用步骤
- 正式消息通道传参时严格遵循JSON规范,传入目标模块的名称字符串即可,例如载荷中配置
"callModule": "coin" - 合约逻辑中调用
(read-module msg 'callModule),即可获得与REPL环境直接传入coin完全等价的模块对象,可直接用于模块方法调用、成员访问等操作,无需额外类型转换。
边界说明
- 传入的模块名必须对应链上已部署、且当前执行上下文有权限访问的模块,否则
read-module会直接抛出执行异常 - 禁止通过
read-string读取模块名字符串后直接当模块使用,Pact为强类型语言,字符串类型无法被自动识别为模块类型,必须通过专属读取函数完成类型解析。
REPL环境支持直接传入模块对象属于调试场景专属的语法糖适配,该能力不遵循JSON格式约束,仅用于本地快速调试。链上正式执行环境要求所有消息载荷必须符合合法JSON规范,所有非基础JSON类型的参数都需要通过对应
read-*系列函数完成反序列化。
内容的提问来源于stack exchange,提问作者Michael Doron
相关产品推荐
相关产品推荐

