|
|
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Простая ситуация: Два класса ссылаются друг на друга. Это вполне допустимо и реализуется с помощью forward-объявления. Но, еще надо разнести эти классы в разные модули. И как теперь быть, ведь на другой модуль forward не действует? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. М.б. есть какие-нибудь хитрости, трюки (например, сделать 3й модуль связующий) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 21:11 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Artem.1st, Только один вопрос: зачем? Ответ на этот вопрос многое прояснит как тебе, так и тем, к кому ты обращаешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 21:20 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
GerasimenkoArtem.1st, Только один вопрос: зачем? На “Зачем..” ответ есть, и вполне логичный. Но, боюсь, что ответив на вопрос ”зачем”, появится 2, 3 вопросы и тема уйдет в оффтопик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 21:30 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Artem.1st, Чтобы не было циклических ссылок выделяется абстракция.. Вы опишите ваш пример, а мы придумаем как это сделать, чтобы не было ссылок.. P.S. а forward по моему мнению мешает правильно создавать архитектуру приложений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 21:50 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 22:07 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Artem.1st, нельзя, сто раз уже перемывали. Вали все связанные классы в один общий модул, вся vcl так сделана. Или в позе креветки выдумывай "абстракции" или тупо используй поля типа TObject с явным приведением к нужному типу в секции реализации. Се ля ви, косяк компилятора. Адепты, глотая пену, назыаают фичей. В других ЯП тоже раньше так было, тоже считалось фичей, пока не поправили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 00:48 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Кстати, ТС уже поднимал сию тему, и, имхо, тупо. троллит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 00:51 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
X-CiteЧтобы не было циклических ссылок выделяется абстракция.. Спасибо за ответ. Но, не хочется избиваляться от циклических ссылок. Наоборот, нужно научиться с ними правильно работать. DimaBr Код: pascal 1. 2. 3. 4. Спасибо за пример. Хотя, явное приведение типов - это слегка “грубоватый” способ, но, натолкнуло на идею: Как-нибудь организовать циклические ссылки при помощи полиморфизма, чтоб компилятор автоматом распознал нужный тип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 10:53 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
ёёёёёВали все связанные классы в один общий модул, Циклические ссылки описанные в одном модуле - это пока самый простой способ. Но, вопрос был: Как разнести в разные модули? ёёёёёКстати, ТС уже поднимал сию тему ... Таких тем(и даже близких по смыслу) я раньше не поднимал. Тролите?! На здоровье, лишь бы другим не мешало... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 10:55 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Artem.1stНо, не хочется избавляться от циклических ссылок. Наоборот, нужно научиться с ними правильно работать. Правильно с ними работать - это не строить архитектуру классов так, чтобы они были. TA1 = class TB = class A: TA1; TA2 = class(TA) B: TB; Вот так с ними правильно работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 11:02 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
X-Citeне строить архитектуру классов так, чтобы они были. возвращаясь от модулей к классам. Надо понять, что плохого в взаимных(циклических) связях между классами. Якобы их надо избегать. Т.е. лучше иметь развесистое дерево классов, чем компактный граф с циклами. Немного утрирую, но с хорошей целью - привлечь внимание знающих людей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2019, 19:09 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Artem.1stХотя, явное приведение типов - это слегка “грубоватый” способ, но, натолкнуло на идею: Как-нибудь организовать циклические ссылки при помощи полиморфизма, чтоб компилятор автоматом распознал нужный тип.генерики хотя дельфи будет стойчески сопротивляться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2019, 19:19 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Artem.1st> взаимных(циклических) связях между классами. Якобы их надо избегать. "Избегать" надо всего лишнего, так обычно проще. > Т.е. лучше иметь развесистое дерево классов, чем компактный граф с циклами. Это похоже на пустую болтовню. Развесистое дерево классов будет без "дублей"? > Немного утрирую, но с хорошей целью - привлечь внимание знающих людей. Вы это совершенно зря. В смысле, что "пофилософствовать" не запрещено, конечно, но соотв. ярлык получите однозначно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2019, 19:24 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
В смысле, что "пофилософствовать" не запрещено, конечно, но соотв. ярлык получите однозначно. Это не филосовствование, а такой способ искать и получать нужную информацию. Этот способ удачно работает на многих IT-шных форумах. И даже на "одном" форуме, где применяют оскорбления, как средство модерирования, все равно удается выцепить нужное инфо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2019, 20:08 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамВ смысле, что "пофилософствовать" не запрещено, конечно, но соотв. ярлык получите однозначно. лично, ГРРустам, раньше бы ты давно послал этот и аналогичные топики вместе с автором в ПТ. Стареешь, наверное ;). Неужели мусор в форуме не надоел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2019, 22:56 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Док, ПТ-то нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 00:02 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Док> наверное ;) Наверное. Хотя и ПТ нет, и мусор не "тот, что раньше". :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 14:57 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Artem.1st, Ты про это ? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Это делается как раз что бы не делать 3ий модуль с абстрактным классом. т.е. когда такое и происходит, эти классы и так лежат в одном файле. Циркулярные ссылки приводят к Runtime ошибкам при компиляции программы, и она перестанет компилироваться. А самое главное - усложняют понимание того, что написано. Я считаю, ты делаешь правильно и задаёшь правильные вопросы. Но другие - так не делают. Тут классы с примерами Hello world. Твои реальные классы могут быть не сложнее. Но их будет дорабатывать другой человек, который уже не будет задавать таких вопросов. В результате это разрастается до такой каши,в которой всё друг на друга ссылается и уже мало кто что понимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 17:41 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
X-CiteArtem.1stНо, не хочется избавляться от циклических ссылок. Наоборот, нужно научиться с ними правильно работать. Правильно с ними работать - это не строить архитектуру классов так, чтобы они были. Не заметил) +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 17:45 |
|
||
|
Вопрос про циклические ссылки
|
|||
|---|---|---|---|
|
#18+
Я делаю так. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 17:56 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39849816&tid=2039140]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
163ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 452ms |

| 0 / 0 |
