在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却不会呢?
答案 0 :(得分:1)
当我在rnode 0.5.3上运行片段IV和V时,它们输出2的结果可能与您预期的一样。
我确认他们在rchain.cloud上没有那样的行为。也许他们正在运行旧版本的节点?