Оригинал статьи.
Элементы массива разделяются запятыми
, и заключаются в квадратные скобки
[]. Пустыми квадратными скобками
[] объявляется пустой массив, в то время как
[1, 2, 3] инициализирует массив с тремя элементами $1$, $2$, $3$.
1 2 |
var arr = new Array(); //Объявление пустого массива var arr1 = [1, 2, 3]; //Инициализация массива с элементами 1, 2, 3 |
Так же, как и в других языках программирования, в haxe многомерные массивы создаются на основе одномерных, у которых элементы являются массивами.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class Main { static function main() { var arr = [[1, 2], [4, 5, 5, 6], [7, 8, 9]]; //Инициализация многомерного массива for (i in 0...arr.length) { for (j in 0...arr[i].length) { trace("arr["+i+", "+j+"]=" + arr[i][j]); //Вывод каждого j-го элемента каждого i-го массива } Sys.print("\n"); } Sys.exit(0); } } |
Сгенерированный код может быть менее кратким на платформах, которые не поддерживают инициализацию массива. В итоге такой код инициализации массива из трех элементов var arr = [1, 2, 3]; будет выглядеть следующим образом:
1 2 3 4 |
var arr = new Array(); arr.push(1); arr.push(2); arr.push(3); |
Это следует учитывать, когда функция должна быть встроенной, так как это может содержать больше кода, чем в данном синтаксисе.
Усовершенствованные методы оптимизации можно посмотреть здесь.
Пример использования массива.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class Main { static function main() { var arr = new Array(); //объявляем массив arr.push(2); //записываем в конец массива число 2 (в данном случае это и первый и последний элемент массива) arr.push(4); //записываем в конец массива число 4 arr.push(8); //записываем в конец массива число 8 arr.push(16); //записываем в конец массива число 16 arr.insert(2, 32); //вставим число 32 третьим в массиве Sys.println(arr); //можем наблюдать, что числа 8 и 16 сдвинулись на одну позицию вправо Sys.exit(0); } } |
- A703 - 08.06.2017
- Ю4.12 - 07.06.2017
- e-olymp 1210. Очень просто!!! - 26.03.2017
— Пожалуйста, не используйте возможностей выбора стиля отображения кода (шрифты, цвета). Я понимаю, что на Ваш взгляд так красивее, но страница будет отличаться от остальных. когда одна из многих страниц учебника оформлена не так, как остальные, это «пугает» читателя. в одном месте я убрал эти настройки, чтобы посмотреть как это будет выглядеть.
— Если в тексте используются элементы кода, то не стоит их оформлять как формулы $[1, 2, 3]$. Их нужно оформлять именно как встроенный (inline) код — [1, 2, 3].
— Вы потеряли ссылки на другие страницы учебника. А Array Comprehension даже уже написана. Вторая ссылка должна будет выглядеть как 4-4-2.
— Оригинальный текст этого раздела руководства какой-то недописанный. Просто просятся какие-то примеры типа var x = [1,2,3];. Вам не кажется? А можно описать массив без инициализации? Есть где-то нормальная документация на эту тему?
— А многомерные массивы где? Может стоит что-то написать про var x = [[1,2,3],[4,5,6],[7,8,9]];?
Не понял замечания по поводу ссылки. Array Comprehension в разделе Language Features, а моя статья в Expressions.
В оригинале статья заканчивается такой фразой: Advanced initialization techniques are described in Array Comprehension.
Почему-то не обратил внимание на последнее предложение. Да, ваш пример лучше, использовал его.
Мне почему-то больше нравится мой вариант.
Здесь показана возможность делать строки разной длины и не используются «магические числа» (вместо них свойство length):