Ver Fonte

SVI Доработка исходного примера

SVI há 2 anos atrás
pai
commit
451e54aecb
1 ficheiros alterados com 42 adições e 7 exclusões
  1. 42 7
      src/main.obu

+ 42 - 7
src/main.obu

@@ -13,23 +13,58 @@
 }
 
 тип {
-    Книга = структ пуб абстракт {
-        Открыть(имя []байт):ошибка;
-        Закрыть():ошибка;
+    Книга = структ абстракт {
+        Открыть(имя []байт)ошибка;
+        Закрыть()ошибка;
     }
-    Журнал = структ пуб (Книга) {
-        год: пуб мут целое;
-        месяц: пуб целое;
-        день: мут целое;
+    Журнал = структ (Книга) {
+        год: целое пуб мут;
+        месяц: целое пуб;
+        день: целое мут;
     }
 }
 
 сущ {
+    журнал = Журнал пуб;
+    альманах = Журнал;
+    ош = ошибка.Ошибка мут;
+}
+
+// Открывает журнал по его имени
+фн Журнал.Открыть(имя []байт)ошибка{
+    если имя.Длина() == 0 {
+        вернуть ошибка.Нов('Журнал.Открыть(): пустое имя журнала');
+    }
+    вернуть ошибка.Пусто();
+}
 
+/*
+  Закрывает журнал
+  Если журнал уже закрыт -- возвращает ошибку.
+*/
+фн Журнал.Закрыть()ошибка{
+    если сам.ЕслиЗкрыто() {
+        вернуть ошибка.Нов('Журнал.Открыть(): журнал уже закрыт');
+    }
+    вернуть ошибка.Пусто();
 }
 
 {
     Лог.СтрокаПеревод(`Привет, мир!`);
+    журнал = ?Журнал{
+        год:2005,
+    }
+    журнал.год = 2020;
+    ош = журнал.Открыть("Пионер");
+    если ош.есть {
+        Лог.Строка(`При открытии журнала, ош=\n\t`);
+        Лог.СтрокаПеревод(ош.знач);
+    }
+    ош = журнал.Закрыть();
+    если ош.есть {
+        Лог.Строка(`При закрытии журнала, ош=\n\t`);
+        Лог.СтрокаПеревод(ош.знач);
+    }
 }.
 
 Здесь, после окончанию модуля тоже можно писать что угодно.