A2 & Oberon GOOGLE trans to English      Помощь      Поиск      Пользователи  Файловый архив


 Страниц (1): [1]   

> Описание: возможно ли упрощение?
lit-uriy Супермодератор
Отправлено: 11 Января, 2009 - 13:08:04
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




Дано:

MODULE FirstModule

PROCEDURE FirstPoc;
BEGIN
...
END FirstPoc;

END FirstModule.
и

MODULE TargetModule;

IMPORT
FirstModule;

PROCEDURE TargetPoc;
BEGIN
FirstModule.FirstPoc;
END TargetPoc;

END TargetModule.
При вызове процедуры из другого модуля приходится перед её именем писать имя модуля. Если эту процедуру из одного и того же модуля нужно вызывать много раз, то становится утомительно писать имя модуля.

Можно ли избежать указания имени модуля, если считать, что такая процедура отсутствует в других импортируемых модулях?
 
 Top
BohdanT Администратор
Отправлено: 11 Января, 2009 - 13:31:51
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




в Модуле-2 было можно с помощью конструкции FROM.

А тут только с помощью процедурных переменных...

Или можно значительно сократить время набора:

IMPORT F:=FirstModule;

Тогда вызов:
F.FirstPoc;
 
 Top
lit-uriy Супермодератор
Отправлено: 11 Января, 2009 - 13:41:38
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




BohdanT пишет:
IMPORT F:=FirstModule;

Тогда вызов:
F.FirstPoc;
я пока так и выкручиваюсь
 
 Top
Wlad
Отправлено: 11 Января, 2009 - 14:38:47
Post Id


Newbie


Покинул форум
Сообщений всего: 32
Дата рег-ции: Окт. 2008  
Откуда: Харьков. Украина
Репутация: 0




lit-uriy пишет:
При вызове процедуры из другого модуля приходится перед её именем писать имя модуля. Если эту процедуру из одного и того же модуля нужно вызывать много раз, то становится утомительно писать имя модуля.

Вводите псевдонимы. Только теперь напишите в проекте напоминалку, что во что сокращено. Для однообразия и помощи памяти... Улыбка

lit-uriy пишет:
Можно ли избежать указания имени модуля, если считать, что такая процедура отсутствует в других импортируемых модулях?

Нет. Можете заменять имя модуля псевдонимом. Но от префикса отказываться нельзя. Это - составляющая часть средств повышения надёжности языка.
Возмущения по поводу недубств уже проходили. Это неудобно в программах "здравствуй мир" или вычисления корней квадратного уравнения. После нескольких тысяч строк и десятков модулей в проекте начинаешь молиться за дедушку Вирта...

-----
У России только два союзника: её Армия и Флот.
 
 Top
MaDzi
Отправлено: 12 Января, 2009 - 00:01:11
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




Я встречал такой код:

TYPE
NewString = Utilities.NewString;
 
 Top
BohdanT Администратор
Отправлено: 12 Января, 2009 - 00:50:47
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




MaDzi пишет:
Я встречал такой код:

TYPE
NewString = Utilities.NewString;

ну, ну и интересно где Подмигивание
Может такой:

TYPE
String = Utilities.String;
 
 Top
MaDzi
Отправлено: 12 Января, 2009 - 01:24:48
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




BohdanT пишет:
MaDzi пишет:
Я встречал такой код:

TYPE
NewString = Utilities.NewString;

ну, ну и интересно где Подмигивание
Может такой:

TYPE
String = Utilities.String;

Ты прав. Каюсь. Но вот это работает:

MODULE Untitled;

IMPORT Utilities;

VAR
NewString: PROCEDURE (CONST str :ARRAY OF CHAR): Utilities.String;

PROCEDURE Demo*();
VAR
US: Utilities.String;
BEGIN
US := NewString('Demo');
END Demo;

BEGIN
NewString := Utilities.NewString;
END Untitled.Demo ~
 
 Top
BohdanT Администратор
Отправлено: 12 Января, 2009 - 02:31:49
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Улыбка
BohdanT пишет:
А тут только с помощью процедурных переменных...
 
 Top
Wlad
Отправлено: 12 Января, 2009 - 11:10:58
Post Id


Newbie


Покинул форум
Сообщений всего: 32
Дата рег-ции: Окт. 2008  
Откуда: Харьков. Украина
Репутация: 0




MaDzi пишет:
...Но вот это работает:

...
VAR
NewString: PROCEDURE (CONST str :ARRAY OF CHAR): Utilities.String;
...
BEGIN
NewString := Utilities.NewString;
END Untitled.Demo ~

А чего б ему не работать? Если типы совпадают... Улыбка

-----
У России только два союзника: её Армия и Флот.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« ActiveOberon »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Locations of visitors to this page
[Valid RSS]

RSS

Valid CSS!


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0132]     [ Gzipped ]