Rholang:@process和* name有什么区别

时间:2018-07-27 00:50:01

标签: rholang

https://rchain.cloud/上运行以下代码段,结果如下。

代码段I

new test in {
  for(@x <- test){
     @"stdout"!(x)
  } |
  test!(1)
}

输出为1

代码段II

new test in {
  for(x <- test){
     @"stdout"!(*x)
  } |
  test!(1)
}

输出为1

代码段III

new test in {
  for(@x <- test){
     @"stdout"!(x+1)
  } |
  test!(1)
}

输出为2

代码段IV

new test in {
  for(x <- test){
     @"stdout"!(*x+1)
  } |
  test!(1)
}

以错误结尾

  

错误:在表达式需要的地方找到了并行或非表达式。

代码段V

new test in {
  for(x <- test){
     @"stdout"!((*x)+1)
  } |
  test!(1)
}

现在,如果我尝试稍微修改一下代码,它将以另一个错误结束。

  

未实现的表达式:   Expr(ETupleBody(ETuple(Vector(Par(Vector(),Vector(),Vector(Eval(Some(Channel(ChanVar(Var(BarVar(0))))))),Vector(),Vector(),矢量(),Vector(),Vector(),Vector(),BitSet(0),false)),BitSet(0),false)))

问题: 片段I等同于II。 那么为什么片段IV和V会引发错误,而片段III却不会呢?

1 个答案:

答案 0 :(得分:1)

当我在rnode 0.5.3上运行片段IV和V时,它们输出2的结果可能与您预期的一样。

我确认他们在rchain.cloud上没有那样的行为。也许他们正在运行旧版本的节点?