Не удается вернуть каждый элемент из набора при запуске его через цикл для всех - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь вернуть каждый элемент из набора, содержащего объекты Brewage, запустив его через цикл для всех. Но возвращаемое значение портится, когда я пытаюсь это сделать.

Функция цикла:

public pure Scan: set of Brewage ==> Brewage
Scan(brewage) == 
for all q in set brewage do 
return q

Конструктор Brewage:

public StringType = seq of char;
public StringLabel = seq of char;
public Char = char; 

instance variables
type : StringType;
label : StringLabel;
deposit : Char;

operations

public Brewage: StringType * StringLabel * Char  ==> Brewage
Brewage(ty, la, de) ==
(   type    := ty;
    label   := la;
    deposit := de
);

Ошибка, которую я получаю, заключается в функции сканирования и следующая:

Операция возвращает пустое значение. Фактический: (() | Brewage) Ожидаемый: Brewage

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете использовать привязку let, чтобы выбрать Brewage в наборе, а затем вернуть его:

public pure Scan: set of Brewage ==> Brewage
Scan(brewage) == let b in set brewage in return b;

public main: ()==>Brewage
main()==
(
  let s = { new Brewage(), new Brewage() } in
    return Scan(s); 
);
...