pact-lang - 预建模块绑定
问题描述
我是 Pact (Kadena.io) 的新手,您能否简单解释一下模块绑定的作用?手册中的解释并不完全清楚明白。
谢谢你。
契约语言
解决方案
该bind
函数将行对象作为输入,并允许您将变量名称与与该对象的键关联的值相关联。例如,假设我有以下对象:
{ "foo" : "is"
, "bar" : 1
, "baz" : 3
}
当我调用bind
这个对象时,我可以将对象的值与我指定的变量名相关联,然后在绑定范围内的表达式中使用这些变量。考虑以下示例:
(let ((obj { "foo": "is", "bar": 1, "baz": 3 }))
(bind obj
{ "foo" := foo
, "bar" := bar
, "baz" := baz
}
(format "1 + 3 {} {}" [foo (+ bar baz)]))
)
这将通过绑定我们自己的变量名称定义并在返回字符串的格式化表达式中使用它们来输出字符串“1 + 3 is 4”。请注意我们在这里所做的。我们获取了与 object 的键关联的值obj
,并将它们绑定到一个变量名,我们可以在绑定函数的范围内使用它。这使我们能够以稳健的方式处理对象。它甚至支持部分对象的部分绑定!
因此,该bind
功能的关键要点是:
当您使用对象时,
bind
允许您使用对象中的值作为变量名。符号
:=
就是这个符号,它允许您将键绑定到变量名。您可能会在其他函数中遇到此符号,例如with-read
andresume
,它总是指将值绑定到某个名称的行为。您可以将变量用于任何目的,只要它们不超出绑定范围即可。
我希望这能解决问题。
推荐阅读
- java - Stream 迭代 hashMap 并处理数据
- gatsby - 使用 GatsbyJs 和 Cloudflare Workers 从 Contentful 中自动提取博客文章
- javascript - 使用 Ajax 结果更新选择选项元素
- java - C# HttpUtility.UrlEncode 与 Java URLEncoder.encode 不一致
- c# - 从 MATLAB 到 C#。C# 程序有滞后
- reactjs - SonarQube with Jest and react - 覆盖 0 条新线路
- azure - 机器人框架:httpStatusCode”:504 无法发送活动:机器人超时
- python - Python 硒点击
- python - 为什么 request.body 在使用美味派的调用自定义 API 时为空?
- rust - 在 Rust 中将文本数字解析为 UTF-8 字符?