Моцарт/Оз дает ошибку: выражение в позиции утверждения

Рассмотрим следующий код:

declare
class Test
   attr L
   meth init L:=nil end
   meth put(X) {Browse @L} end
   meth get {Browse @L} end
   meth isEmpty @L==nil end
   meth getList @L end
   meth setNil L:=nil end
   meth union(C) {Browse @L} end
end

Когда я компилирую этот класс, он выдает ошибку: выражение в позиции оператора. Я проверяю свой небольшой код около часа, чтобы исправить эту ошибку, но мне не повезло. Пожалуйста, помогите мне найти проблему. Спасибо.


person Ramin    schedule 29.03.2014    source источник


Ответы (1)


ваши методы не могут ничего вернуть! isEmptyи getList должны быть

meth isEmpty(R) R=(@L==nil) end
meth getList(R) R=@L end

и вы можете использовать

T={New Test init}
{Browse {T isEmpty($)}}

делать «как если бы у него было возвращаемое значение»

На самом деле {Browse {T isEmpty($)}} совпадает с
local R in {T isEmpty(R)} {Browse R} end

Извините за мой плохой английский

person yakoudbz    schedule 31.03.2014