Показать сообщение отдельно
  #54 (permalink)  
Старый 13.01.2011, 07:31
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

насколько я понял, есть разные мнения на тему того, что такое "настоящий" массив:

1) предусмотрен ли в языке специальный синтаксис для многомерных массивов (есть ли многомерные массивы на уровне языка). C, например, не проходит по этому критерию, но проходит по следующему

2) как такие массивы реализованы: либо есть один непрерывный блок, хранящий последовательно все значения, либо есть много одномерных массивов, связанных друг с другом. Непрерывный блок может быть лучше с точки зрения производительности, но такие массивы менее гибкие, мало где нужны и мало где остались

по первому критерию, проходит BASIC

но в любом случае, тут не чем хвастаться

а вот как работали с многомерными массивами в perl, пока там не появились ссылки
Код:
@john = (47, "brown", 186); @mary = (23, "hazel", 128); @bill = (35, "blue", 157);
@vitals = ('john', 'mary', 'bill');
Код:
$vitals = $vitals[0]; eval "\$${vitals}[1] = 'red'";
или

Код:
local(*array) = $vitals[0];  # Alias *array to *john
$array[1] = 'red';           # Actually sets $john[1].
UPD, по поводу первого критерия... C не знает, что такое многомерный массив. Когда ты пишешь int a[5][7], для него это int (a[5])[7]. Т.е. он рассматривает это как массив c элементами типа int[7], просто у C гибкая система типов. Но когда ты в BASIC пишешь DIM A(5,7)... он не может не знать, что это многомерный массив

Последний раз редактировалось x-yuri, 13.01.2011 в 07:59.
Ответить с цитированием