M Mobile Shell:Reference:Language:Arrays

Материал из mShellWiki
Перейти к: навигация, поиск

Массивы (en)

[править заголовок, править ссылку на оригинал, править текст, править список подразделов, править список разделов]

Массивы — это наборы данных. Элементы массивов могут быть различных типов и сами могут являться массивами. Обращение к элементу массива происходит по индексу. Индексы — это целые числа, индекс первого элемента массива равен нулю. Индексация предполагает заключение значения индекса в квадратные скобки [], следующие за переменной массива.

При попытке обращения к элементу с отрицательным или слишком большим номером формируется исключение ExcIndexOutOfRange.

Функция .len (см. модуль Встроенные функции и константы (en)) возвращает количество элементов в массиве.

Массивы могут быть созданы с помощью литералов массивов или с помощью функций модуля array. Константа массива — это последовательность значений элементов разделенных запятыми и заключенных в квадратные скобки:

a=["One", "Two", "Three"];
print a[0] // первый элемент
→ One
print a[2] // третий элемент
→ Three
print len(a)
→ 3
print a[3] // четвертый элемент не определен
→ ExcIndexOutOfRange thrown

Массивы в языке m — динамические, то есть они могут увеличиваться и уменьшаться в размере. Функция .append добавляет элементы в массив:

append(a, "Four", "Five");
print a
→ [One,Two,Three,Four,Five]

Ассоциативные массивы (en)

[править заголовок, править ссылку на оригинал, править текст]

Переменные массивов также могут быть проиндексированы строками ("ключами"), которые делают массив "ассоциативным" и облегчают много программистских задач. Установка или получение элемента массива через строковый ключ происходит быстро [3].Файл:m Mobile Shell hint.png Обычно ключи чувствительны к регистру, но array.new может также создавать массивы, использующие нечувствительные к регистру ключи.

В отличие обращений по номерам, при обращении через строку по несуществующему индексу исключение не возникает:

  • Получение элемента по несуществующему ключу возвращает null.
  • Задание элемента по несуществующему ключу добавляет элемент в массив.

К элементам массивов со строковыми ключами все-равно можно обращаться по целочисленным индексам.

В константах массивов можно добавить ключ, предварив значение соответствующим ключом и двоеточием:

h=["Joe":150, "Jack":165, "William":180, "Averell":195];
print h["Jack"]
→ 165
print h["Lucky Luke"] // element does not exist
→ null
h["Lucky Luke"]=185; // element is appended
print h
→ [150,165,180,195,185]
print h[2]
→ 180

См. также: .append, .keys, модуль array.

EBNF
__
Literal = SimpleLiteral | ArrayLiteral .
ArrayKey = Expression .
ArrayValue = Expression .
ArrayElement = [ArrayKey ':'] ArrayValue .
ArrayLiteral = '[' [ ArrayElement {',' ArrayElement} ] ']' .
Designator = Variable { Selector } [ InstanceFunctionReference ] .
Selector = '[' Expression ']' | InstanceSelector .



© 2004-2009 airbit AG, CH-8008 Zürich
перевод от m-shell.ru

Наши друзья
Личные инструменты