返回介绍

17.2 在函数式泛型下,函数=x’+x“,而消息用于表明 Sx

发布于 2024-12-15 23:01:52 字数 1473 浏览 0 评论 0 收藏 0

我们看到,消息本身跟状态是同义的——具有明确的“含义与可操作性”,只是在函数(以及函数式语言设计范式)中,接收者可以视为发出者一定持有了{*x’, x“*},并通过消息 M 来 通告 了上述数据的状态 2

消息发布与处理,成为多个函数之间的一种关系,如图 46 所示。

图 46 消息的发布与处理:在整个逻辑步骤(Step) 链条上的数据隔离

在这一关系中:

  • Step1 与 Step2 之间的时序关系与数据依赖关系是不明确的:所有类似的关系与依赖变成了它们之于消息 M 的处理规则,亦即是更复杂的逻辑 3
  • 数据之间的关系被彻底屏蔽了:Step2 并不依赖 Step1 的任何数据,包括它的入口数据或出口数据 4

表面上看,消息类似于调用,例如我们可以将 Step1 与 Step2 之间的关系看做:

1
2
3
4
  function Step1() {
    Step2()
    ...
  }

一方面,这种“类似调用关系”的形式的确意味着 Step2 在时序上依赖 Step1;但另一方面,在我们讨论的消息中,实际并没有“调用”这层关系。也就是说,Step1 向 Step2 发出消息 M 之后就可以执行自身的逻辑了,并不需要等待 Step2 的执行,也不依赖 Step2 的结果数据 5

消息并没有类似回调的性质,尽管消息可以用于实现这一性质。Step1 发出消息 M 这一行为,并不表明 Step2 必然执行某种由 Step1 决定的逻辑(例如回调函数),也并不表明消息 M 是某个函数的数据依赖。

消息也没有类型与结构的约束。一个消息以何种复杂程度的方式来记录消息体,是 Step1 与 Step2 之间或者 Step2 与 StepN 之间的约定。除了约定的双方或多方对规则的强约束外,消息本身并不存在语言层面或计算机系统层面的约束。因此,基于消息的模型很容易适应复杂的计算环境。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文