|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.09.2016, 22:20 | #21 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Ну да ладно, либо костылями махаться, либо методами. Остальное - это уже усложнение "в глубину"
Подпись ? Не, не слышал ...
|
14.09.2016, 22:23 | #22 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
так чем вас не устраивает просто дать доступ к массиву таки?
как я говорил там нет оверхеда никакого. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
14.09.2016, 22:26 | #23 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Пепел Феникса
Я не говорил, что не буду давать доступ ко всему массиву. Просто я вижу неоднозначность. Но, как говорится, то что видит один, и не видят остальные, значит этот один - псих.
Подпись ? Не, не слышал ...
|
14.09.2016, 22:28 | #24 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
какая не однозначность?
код однозначен, доступ к элементу массива, не более. я вам специально расписал код с временной переменной.(можно расписать еще чуть подробнее) массивы передаются по ссылке, всегда. если вы изучали С++, забудьте это. тут всегда, class - ссылка, struct - значение. обратившись к индексатору, присвоение будет в него, а не в объект источник. выражение data[i], а не data. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 14.09.2016 в 22:31. |
14.09.2016, 22:36 | #25 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
В свойстве доступа пишется
Код:
Моё понимание инкапсуляции и распределения доступа диктует, что правильнее писать Код:
В смысле ?
Подпись ? Не, не слышал ...
|
14.09.2016, 22:38 | #26 | ||||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
у меня сейчас мелькнула мысль, что вы думаете что присвоений будет несколько.
myClass.Data[i]=myClass.Data[j] так вот, тут не будет несколько присвоений, у нас один знак равенства. lvalue берется целиком, rvalue тоже не будет такого: Код:
неявных пересозданий массива тоже нету. язык однозначен тут. Цитата:
вы хотите открыть доступ к массиву, откройте его. инкапсуляция - это не усложнение доступа, а ограничение. но в данном случае вы сами хотите дать доступ к массиву. я сразу ведь сказал: Цитата:
Цитата:
Цитата:
с ней все равно ничего страшного сделать нельзя. вы своим GetData даете ровно такой же доступ, как эта ссылка. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 14.09.2016 в 22:42. |
||||
14.09.2016, 22:39 | #27 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Что существует в синтаксисе: индексатор класса и свойство; чего не существует - именованный индексатор, или же "индексатор свойства", который можно так же назвать "свойство с доп. параметрами". Но его нет.
Подпись ? Не, не слышал ...
|
14.09.2016, 22:40 | #28 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну да, нет. Сказали ж это еще в начале темы. Зато куча других вещей есть.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
14.09.2016, 22:43 | #29 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Пепел Феникса
Я вижу два присвоения: 1 - присвоение в массив по ссылке (которую вернуло свойство, происходит вне свойства) 2 - присвоение ссылки внутри свойства set. Первый знак присвоения: myclass.Data[i] = myclass.Data[j]; Второй знак присвоения (внутри свойства Data): set { data = value; }
Подпись ? Не, не слышал ...
|
14.09.2016, 22:43 | #30 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
выражение myClass.Data, это всегда обращение к свойству. Цитата:
у нас нет myClass.Data= вызов set будет только при присвоении значения именно этому свойству, Код:
если вам нужно запретить возможную подмену массива, делайте просто Код:
прочитайте еще раз это. Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 14.09.2016 в 22:51. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Wordpress, как создавать отдельные рубрики для страниц? | AlienNation | WordPress и другие CMS | 0 | 09.10.2012 11:42 |
Именованные таблицы | DiemonStar | Microsoft Office Excel | 4 | 02.10.2012 18:02 |
Операции класса, индексаторы Rectangle | 6666 | Общие вопросы .NET | 4 | 08.05.2012 11:31 |
Именованные ячейки | Foxx | Microsoft Office Excel | 1 | 20.02.2012 00:33 |
Как в Delphi создавать и использовать скины для програм | SeRhy | Помощь студентам | 3 | 20.12.2007 20:59 |