Разница между доступом к элементам ячейки с помощью фигурных скобок и скобок - PullRequest
23 голосов
/ 29 января 2012

В чем разница между доступом к элементам в массиве ячеек с использованием скобок () и фигурных скобок {}?

Например, я пытался использовать cell{4} = [] и cell(4) = [].В первом случае он устанавливает элемент 4 th равным [], но во втором случае уничтожает элемент ячейки, то есть уменьшает количество элементов ячейки на 1.

Ответы [ 2 ]

63 голосов
/ 29 января 2012

Думайте о массиве ячеек как о регулярном гомогенном массиве, все элементы которого cell с. Круглые скобки (()) просто обращаются к объекту-оболочке cell, а доступ к элементам с помощью фигурных скобок ({}) дает фактический объект, содержащийся в ячейке.

Например,

A={ [5,6], 0 , 0 ,0 };

будет выглядеть так:

enter image description here

Синтаксис создания элемента равным [] с круглыми скобками на самом деле является запросом на удаление этого элемента, поэтому, когда вы просите сделать foo(i) = [], вы удаляете i -я клетка Это не операция присваивания, а операция RemoveElement, которая использует синтаксис, аналогичный присваиванию.

Однако, когда вы делаете foo{i} = [], вы присваиваете i-й ячейке новое значение (которое является пустым массивом), таким образом очищая содержимое этой ячейки.

3 голосов
/ 29 января 2012

См. Справку в этой ссылке . Как вы увидите, обращение к скобкам () дает вам подмножество ячейки (то есть подэлемент), а фигурные скобки {} дают вам содержимое ячейки, к которой вы пытаетесь обратиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...