Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Oberon
Перезагрузить страницу Есть объект - связанный список tLinkList. В него можно добавлять указатели
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
DeepFinder DeepFinder вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.06.2004
По умолчанию Есть объект - связанный список tLinkList. В него можно добавлять указатели - 20.02.2005, 03:18

Господа, кто знает объясните, please.

В мануале по ЧЯ указано что производится динамическая проверка типов. Однако я не могу въехать: они только проверяются или можно так же использовать текущий динамический тип в своих целях?

Задача:

Язык Паскаль.
Есть объект - связанный список tLinkList. В него можно добавлять указатели, а так же получать их.

tLinkList.AddItem(p:pointer); //метод добавления к списку нового указателя
tLinkList.GetItem(var p:pointer); //метод получения указателя из списка


Код:
type test=record
          dummy1:longint;
          dummy2:string;
          dummy3:word;
       end;

var list:tLinkList;
      p1:^Integer;
      p2:^test;
      p:pointer;
    .
    .
    .
begin
  New(p1); p1^:=1;
  p:=p1; //обманываем компилятор
  list.AddItem(p1);

  New(p2); p2^.dummy1:=1; 
  p:=p2; //обманываем компилятор
  list.AddItem(p1);

  list.GetItem(p);
  p2:=p; //опять обманываем компилятор

  list.GetItem(p);
  p1:=p; //опять обманываем компилятор

end.
В простом паскале мы можем передать в метод указатель определённого, заранее известного типа.
А вот было бы круто, если бы мы могли передавать внутрь указатели разных типов, а внутри легко определять тип переданного указателя.

Можно ли легко реализовать это в Обероне

Если да то это открывает возможность написания общих процедур для разных типов данных, как в языках Lisp, Euforia .
Ответить с цитированием
  (#2 (permalink)) Старый
DeepFinder DeepFinder вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.06.2004
По умолчанию Есть объект - связанный список tLinkList. В него можно добавлять указатели - 20.02.2005, 03:18

Господа, кто знает объясните, please.

В мануале по ЧЯ указано что производится динамическая проверка типов. Однако я не могу въехать: они только проверяются или можно так же использовать текущий динамический тип в своих целях?

Задача:

Язык Паскаль.
Есть объект - связанный список tLinkList. В него можно добавлять указатели, а так же получать их.

tLinkList.AddItem(p:pointer); //метод добавления к списку нового указателя
tLinkList.GetItem(var p:pointer); //метод получения указателя из списка


Код:
type test=record
          dummy1:longint;
          dummy2:string;
          dummy3:word;
       end;

var list:tLinkList;
      p1:^Integer;
      p2:^test;
      p:pointer;
    .
    .
    .
begin
  New(p1); p1^:=1;
  p:=p1; //обманываем компилятор
  list.AddItem(p1);

  New(p2); p2^.dummy1:=1; 
  p:=p2; //обманываем компилятор
  list.AddItem(p1);

  list.GetItem(p);
  p2:=p; //опять обманываем компилятор

  list.GetItem(p);
  p1:=p; //опять обманываем компилятор

end.
В простом паскале мы можем передать в метод указатель определённого, заранее известного типа.
А вот было бы круто, если бы мы могли передавать внутрь указатели разных типов, а внутри легко определять тип переданного указателя.

Можно ли легко реализовать это в Обероне

Если да то это открывает возможность написания общих процедур для разных типов данных, как в языках Lisp, Euforia .
Ответить с цитированием
  (#3 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Типы динамические, али нет? - 21.02.2005, 11:25

Цитата:
Originally posted by DeepFinder
[b]А вот было бы круто, если бы мы могли передавать внутрь указатели разных типов, а внутри легко определять тип переданного указателя
Конечно такая возможность есть.
Код:
IF p IS MyPointerType THEN p(MyPointerType).DoSmth() END;
Код:
WITH p: MyPointerType DO p.DoSmth() END;
Другое дело что "обмануть компилятор" Вам не удасться. POINTER TO бывает либо на ARRAY, либо на RECORD. На простые типы данных POINTER TO не бывает, а также компилятор контролирует правильность приведения указателей на RECORD согласно типам расширениям этого RECORD.
Ответить с цитированием
Ads
  (#4 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Типы динамические, али нет? - 21.02.2005, 11:25

Цитата:
Originally posted by DeepFinder
[b]А вот было бы круто, если бы мы могли передавать внутрь указатели разных типов, а внутри легко определять тип переданного указателя
Конечно такая возможность есть.
Код:
IF p IS MyPointerType THEN p(MyPointerType).DoSmth() END;
Код:
WITH p: MyPointerType DO p.DoSmth() END;
Другое дело что "обмануть компилятор" Вам не удасться. POINTER TO бывает либо на ARRAY, либо на RECORD. На простые типы данных POINTER TO не бывает, а также компилятор контролирует правильность приведения указателей на RECORD согласно типам расширениям этого RECORD.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое связанный список farus Вопросы начинающих программистов 1 01.06.2011 07:07
Связанный список и работа с ним alexu C++ Builder 4 05.05.2010 15:58
Задан список произвольного уровня вложенности, сформировать из него новый список Kolobov_Anton Lisp 3 26.03.2009 22:29
Есть ли способ программно получить список стран, аналогичный тому который есть в Cont EvgenySh Visual C++ 2 05.03.2008 14:56
TStringList указатели на объект этого класса |ina C++ Builder 2 21.06.2006 23:01
L – список, элементами которого являются списки. Удалить из него все подсписки drunkenelf Lisp 2 28.12.2005 01:00
Связанный список Disassociative С/С++ 7 01.08.2005 21:57
Есть файл hello.asm как из него сделать hello.exe Варвар Assembler 5 21.05.2005 14:40
Как организовать выпадающий список что бы была картинка напротив него Lena C++ Builder 1 19.05.2005 07:15
Как сделать список DBGrid связанный с базой данных wash C++ Builder 1 17.03.2005 21:34
Есть текстовый файл из него надо прочитать строку у которой есть заданная подстрока etc С/С++ 24 11.02.2005 11:52
Что вы думаете о FreePascal , есть ли у него будующее Dimitrii Pascal 7 31.07.2004 23:49



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов