Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 446 447 [448] 449 450 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#6706
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Прочти уже про примитивные типы в яве/шарпе. В последнем так и свои типы-значения создавать можно. А отличается тем, что про яву - это твои фантазии ![]() И ты прочитай про окружения. =/ И расскажи, как в яве передать int по ссылке. В яве нет такого механизма, как явные ссылки. Вот тебе шарп: ![]() ![]() using System; public class HelloWorld { static public void change(ref int x) { x += 100; } static public void Main() { int x = 10; Console.WriteLine (x); change(ref x); Console.WriteLine (x); } } Добавлено Надо читать документацию Цитата Мы же уже выяснили, что наличие mutable рушит весь этот псевдоконтракт. Нет, не рушит. Контракт заключается не в отсутствии физических изменений, а в отсутствии логических. |
|
Сообщ.
#6707
,
|
|
|
|
Дык ну да же! Потому я и называю int иммутабельными данными, но переменные типа int конечно же мутабельны. Т.е. это значит, что переменную типа int можно изменить только в ее лексическом окружении. В отличие от делфи и плюсов (и C#). Видимо MS это сделало ради совместимости с плюсовым кодом. |
|
Сообщ.
#6708
,
|
|
|
|
Тяжелый случай...
![]() ![]() int func(Window w); ![]() ![]() procedure proc(const w: Window); |
|
Сообщ.
#6709
,
|
|
|
|
Цитата D_KEY @ Нет, не рушит. Контракт заключается не в отсутствии физических изменений, а в отсутствии логических. Что в лоб, что по лбу. Да откуда ты знаешь, что там автор задумывал как логическое, а что -- как физическое, может он все поля запихнул в mutable. Или например унаследовался от класса, в котором const-метод, а ему вдруг зачем-то захотелось изменять логическое состояние, взял и перекрыл методы, создал новые поля для хранения логического состояния, и сделал их все mutable, чтобы сигнатуры методов совпадали с родительскими. Вот и накрылся контракт медным тазом. Добавлено Цитата trainer @ ![]() ![]() int func(Window w); Не знаю и не вижу зачем мне это знать. Мне как-то достаточно прочитать документацию по этой функции (раз имя такое ни о чем не говорящее), что бы узнать зачем она нужна и соответственно когда ее применять. Что она там изменяет -- мне, вероятно, пофиг. |
|
Сообщ.
#6710
,
|
|
|
|
Цитата korvin @ Да и на здоровье. Меня интересует только внешнее проявление. А внутри он там может хоть вприсядку плясать. Да откуда ты знаешь, что там автор задумывал как логическое, а что -- как физическое, может он все поля запихнул в mutable. |
|
Сообщ.
#6711
,
|
|
|
|
Цитата trainer @ ![]() ![]() procedure proc(const w: Window); аналогично с предыдущей. Не напутал Добавлено Цитата trainer @ Да и на здоровье. Меня интересует только внешнее проявление. А внутри он там может хоть вприсядку плясать. Так и в чем проблема тогда? |
|
Сообщ.
#6712
,
|
|
|
|
Цитата korvin @ Мне как-то достаточно прочитать документацию по этой функции (раз имя такое ни о чем не говорящее), что бы узнать зачем она нужна и соответственно когда ее применять. Добавлено Цитата korvin @ В том, что в Delphi const для ссылочных типов вовсе не const Так и в чем проблема тогда? |
|
Сообщ.
#6713
,
|
|
|
|
Цитата korvin @ Потому я и называю int иммутабельными данными, но переменные типа int конечно же мутабельны. Т.е. это значит, что переменную типа int можно изменить только в ее лексическом окружении. В отличие от делфи и плюсов (и C#). Видимо MS это сделало ради совместимости с плюсовым кодом. В яве примитивные типы аналогичны шарповским. А вот ref отсутствует. |
|
Сообщ.
#6714
,
|
|
|
|
Цитата trainer @ В том, что в Delphi const для ссылочных типов вовсе не const Нет, он const, просто это не тот const о котором ты думаешь, я уже приводил пример выше какой это const, это ![]() ![]() void func (Obj & const x) вот этот const вроде. Добавлено Цитата D_KEY @ В яве примитивные типы аналогичны шарповским. А вот ref отсутствует. И так... В яве примитивные типы аналогичны шарповым, но передать их по ссылке как в шарпе нельзя. В яве примитивные типы не такие, как в питоне, но в питоне их тоже нельзя передать по ссылке. Просто букет взаимоисключающих параграфов, не находишь? Может приведешь наглядное отличие питона от явы в этом отношении? |
|
Сообщ.
#6715
,
|
|
|
|
Цитата korvin @ Чтение документации - это хорошо и правильно. Особенно если она есть. Как человек, участвующий в разработке большого проекта, могу тебе сказать, что:Мне как-то достаточно прочитать документацию по этой функции 1) документацию надо писать 2) она иногда устаревает. Добавлено Цитата korvin @ Я догадываюсь, о чем ты. Только я работаю с экземпляром типа. А как оно там внутри устроено - ссылка в стек пихается или еще что-то - мне безразлично. Зачем мне разбираться в деталях реализации? Нет, он const, просто это не тот const о котором ты думаешь |
|
Сообщ.
#6716
,
|
|
|
|
Цитата trainer @ Да и на здоровье. Меня интересует только внешнее проявление. А внутри он там может хоть вприсядку плясать. Т.е. то, что у const-метода можут быть внешнее проявление, тебя не смущает? |
|
Сообщ.
#6717
,
|
|
|
|
Кстати, вдогонку
Цитата korvin @ раз имя такое ни о чем не говорящее Да на здоровье: ![]() ![]() int GetWindowId(Window w); ![]() ![]() procedure Lock(const w: Window); Они меняют параметр w? |
|
Сообщ.
#6718
,
|
|
|
|
Цитата korvin @ Т.е. то, что у const-метода можут быть внешнее проявление, тебя не смущает? Это никого не смущает. |
|
Сообщ.
#6719
,
|
|
|
|
Цитата korvin @ В смысле - может выводить что-то в std::cout? не смущает. у const-метода можут быть внешнее проявление, тебя не смущает? |
|
Сообщ.
#6720
,
|
|
|
|
korvin, я не пойму, ты что пытаешься сказать? Что человек может сломать const? Так он что угодно может сломать. Хотя, конечно, да, эти высокоуровневые функциональные языки для чокнутых профессоров, ничего длиннее хелловордов не писавших и не представляющих себе работу инженера, всё обеспечивают, ага. Только никому на МПХ не нужны.
|