LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 区块链技术 | Rholang(第10课):对象功能

区块链技术 | Rholang(第10课):对象功能

2020-02-23 RChain 来源:火星财经

更多语法

到目前为止你已经能成功写出一些实际的项目。在我们深入下一单元前,让我们学习更多实用的语法,你需要这些现实世界的工具来创建下一代杀手级应用。

二元运算符

第一个学习的语法就是二元运算符。二元运算符需要有两个操作数,那是他们为什么成为“二元”的原因。大多数都是用于算术。请看下面的例子。

math.rho

练习

现在轮到你写出f2c的合约。你可以使用相同的两个测试案例以确保你的结果正确。

最后你应该知道的二元操作符是++,它是用于“联合”或者说把两个小东西组合成一个大东西。这个操作符适用于列表和字符串。列表我们会在下一单元学习到,字符串我们已经学习过了。

greeter.rho

代码stdout!("I" ++ "<3" ++ "rholang")会输出什么?

I <3 rholang["I", "<3", "rholang"]I<3rholangI++<3++rholang

接收 Processes?

我们通常发送 ____ 和接收 ____.

processes, namesprocesses, processesnames, namesnames, processes没有严格规定

要做的事情:有一种放在门口的邮箱柜子。我们可能会把在你家门口的邮箱什么的弄混。“嘿,兄弟,还是账单?我想要情书”。

重温一下以前单元的内容,希望你还能记住。如果你已经写过你自己的rholang代码,那么你可能已经发现你是多么的希望你可以直接接收"Processes"而不需要输入各种*。这是很普遍的一种现象,很幸运rholang有一个很好的解决方法。我们经常接收"names",所以我们可以通过@myValue这里来绑定"name"语法。既然@myValue是一个"name",那么myValue一定是一个"process"。

这个语法允许我们做像这样的事, `for (@number <- @"someChan"){@"double"!(2 * number)}``

应该用什么样的代码来与前面的代码并行以达到24在@"double"中?

@number!(12)@"someChan"!(12)@number!(24)@"double"!(48)

练习

重温一下第三课中传音筒的游戏,在那个展示中,我们已经使用了@message的语法模式,所以message是一个"process"

我们应该把for(@x <- @y){stdout!(...)}中 ... 替换为什么来让程序是正确的?

@xx*x

条件语句

几乎在所有编程语言中,程序的行为需要根据情况来定义。例如,如果天气很好的话,我就可以跑在小道上面,但是如果下雨的话,我就在路边。rholang是这样用语法实现的。

if ( /* condition */ ) { Nil // Do this if condition is true } else { Nil // Do this if condition is false }`

你用if的情况是没有限制的,包括猜一个秘密字母是否正确,在游戏中设定一个高分数,决定哪张扑克牌更大和计算选举获胜者。下面的例子合约展示给你看如何检查一个银行账号的状态。

signTest.rho

比较符

现在你知道了如何使用if/else,这里还有很多比较符给你使用。

a > ba大于b么?a < ba小于b么?a == ba等于b么?a <= ba小于或者等于b么?a >= ba大于或者等于b么?a != ba不等于b么?

这些操作符可以作用于数字或者字符串。字符串按照字典顺序排序,有点像字母表排序。但是小心!如果你用一个数字与一个字符串比较,它会是另一个停止的"process"。

下面哪个是对的?

4 < 3"b" < "a"5 <= 6"hello" != "hello"

布尔操作符

Rholang也有传统的布尔操作符, AND, OR, 和 NOT。语法是

当a和b都是真的,a and b是真的当a或b都是真的,a and b是真的当a是假的 ,not a是真的

stdout!(true and true)会输出什么??

truefalse都不是; 非法语法

stdout!(not true)会输出什么?

truefalse都不是; 非法语法

stdout!((not not true) or false)会输出什么?

truefalse都不是; 非法语法

练习

写一个合约告诉调用的人他们是否有资格投票。你必须达到一定的年纪和在一个规定的国家内才能投票。你可以选择年龄和国家。我可以通过并行@"canIVote!("Nigeria", 30)"来使用合约。

练习

上面的合约指适用于一个特定的国家。用我们学过的工厂来创建出有各种资格的检查者。创建一个投票年龄为18岁的加拿大的检查者,用@"checkerFactory"!(canadaChecker, "Canada", 18)。然后用代码canadaChecker!("Estonia", 41)测试一个41岁的爱沙尼亚人他是否符合加拿大的投票资格。 提示:他不能在加拿大投票。

本文来源:RChain
原文标题:区块链技术 | Rholang(第10课):对象功能

—-

编译者/作者:RChain

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...