Вы можете создать значение по умолчанию Cup
и затем инициализировать массив следующим образом:
method FilterCupDrinkType(a: array<Cup>, dt: Drink) returns (b: array<Cup>, n: int)
{
var default := new Cup(0, WATER, false);
var temp := new Cup[a.Length](_ => default);
}
, или вы можете разрешить temp
быть массивом, допускающим значение NULL Cup
s (т. Е. Cup?
)
method FilterCupDrinkType(a: array<Cup>, dt: Drink) returns (b: array<Cup>, n: int)
{
var temp := new Cup?[a.Length];
}
или вы можете скопировать a
следующим образом
method FilterCupDrinkType(a: array<Cup>, dt: Drink) returns (b: array<Cup>, n: int)
{
var temp := new Cup[a.Length](i requires 0 <= i < a.Length reads a => a[i]);
}
Часто хороший способ найти решение для таких вопросов, если вы не хотите ждатьответ здесь - поиск по обширному набору тестов Дафни по адресу https://github.com/dafny-lang/dafny/tree/master/Test. Конечно, учебник - лучший выбор, если рассматривать тему.