Dafny,按序列中的值替换索引
Dafny, replace index by value in sequences
在 rise4fun 的 Dafny 教程中,s[i := v]
被定义为用序列 s
中的 v
替换索引 i
。
但是使用它总是失败 expected method call, found expression
.
例如在下面的代码中交换两个索引
var a:int :=input[j];
var b:int :=input[j-1];
input[j := b]; //expected method call, found expression
input[j-1 := a]; //expected method call, found expression
在交换两个索引的情况下,s[i := v]
的正确使用方法是什么。
你可以写
var a:int :=input[j];
var b:int :=input[j-1];
input := input[j:=b] ;
input := input[j-i : a];
更简洁,但可能更难阅读
input := input[ j := input[j-1] ][ j-1 := input[j] ] ;
在 rise4fun 的 Dafny 教程中,s[i := v]
被定义为用序列 s
中的 v
替换索引 i
。
但是使用它总是失败 expected method call, found expression
.
例如在下面的代码中交换两个索引
var a:int :=input[j];
var b:int :=input[j-1];
input[j := b]; //expected method call, found expression
input[j-1 := a]; //expected method call, found expression
在交换两个索引的情况下,s[i := v]
的正确使用方法是什么。
你可以写
var a:int :=input[j];
var b:int :=input[j-1];
input := input[j:=b] ;
input := input[j-i : a];
更简洁,但可能更难阅读
input := input[ j := input[j-1] ][ j-1 := input[j] ] ;