rholang第4课:持续发送与窥探

持续发送与窥探

为什么要重复发送?

在这里插入图片描述

我们的披萨和咖啡店都可以在同一个复用通道中接收消息。我们使用一个持续的for (msg <= chan){...}或者一个合约contract chan(msg){...}来达成这一目的。

空中交通管制塔楼可能会乐于做刚好相反的事——不停地发送相同的消息。塔楼中的控制者希望记录同时包含天气和跑道信息的消息,并且提供给所有需要的飞行员。类似披萨店, 他们很繁忙,不会费力地在每次飞行员需要时都不停地发送信息。

持续发送的语法

控制塔需要在代码上做较小的调整,以使得发送操作能够持续。他们会使用!!而非单个!

persistentSend.rho

请自行确认一下,原先发送的消息是否仍然在元组空间内。

练习

注意上述代码,第二名飞行员同样能够接收到信息。发送仍在持续。

对了,你注意到了吗?当我们实际上并不使用stdout时,我们不需要new stdout(...) in {}

for (x <- y) {Nil} | y!!(Nil)中有多少次通信事件发生?

  • 1
  • 很多次
  • 0

二次检查消息

正如我们刚才展示的,持续性发送和接收非常有用。但是,普通的发送和接收也同样足够好了。设想这样的场景:我将一个字母发送给祖母,她接收到了这个消息。

grandma.rho

现在我们设想:我想要二次检查我是否给她发送了正确的时间。我可以简单地取出这条消息,但这样一来她就没法读取这个消息了。

练习

依据你所知道的,你可以通过获取这个消息,自行检查它,再将它发送回旧的通道,以达到我们的目的。

请自行尝试上面的方案。答案已列在下面。

for (x <= y) {Nil} | y!!(Nil)会产生多少个通信事件?

  • 1
  • 很多个
  • 0

答案

grandmaCheck.rho

窥探语法

rholang以后会为观察通道内变量提供一个特殊的语法。目前我们还不能使用它,但是下面会展示给你看这个语法的用法。我们将使用<!操作符来"窥探"一个通道内的消息。

peek.rho

如果你使用过excel的宏,或者excel,你应该对如何在不取出数据的情况下访问它感到非常熟悉。把它当做for (value <! A1) { ... }

下列哪一个语法是用于窥探一个消息的?

  • for (x <! y){...}
  • for (x <= y){...}
  • x!!(y)

for (x <! y) {Nil} | y!!(Nil)会产生多少个通信事件?

  • 1
  • 许多
  • 0

关注RChain:
https://rchain.coop/

代码库GitHub:
https://github.com/rchain

官方中文微博:
RChain官方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值