在dafny中更新不可变字符串的最佳方法

时间:2016-05-11 02:55:43

标签: string immutability dafny

我正在尝试验证将caeser密码应用于字符串的程序。必须返回原始字符串

method caesar(s:string, index:int)
//apply caesar

更新字符串值的最佳方法是什么,类似于:

s[i] := 'x'

1 个答案:

答案 0 :(得分:1)

无法更新Dafny中的字符串。 Strings are representedseq<char>,序列在Dafny中是不可变的。不可变意味着序列是一个值,不能改变。

如果您需要in place manipulation,则可以改为使用array<char>

如果您可以返回new sequence,则可以

var s' := s[i := e];
return s';