![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 49
|
Почитав, форум написал следующее:
if (commandBlock.added) { var numChildren:uint = this.codeCont.codePlateSp.numChildren; for (var i:uint = 0; i < numChildren; i++) { var block:commandBlock = this.codeCont.codePlateSp.getChildAt(i) as commandBlock; instruct = block.getCommand; commandArray[instruct.charAt(0)].push(instruct.charAt(1)); commandArray[instruct.charAt(0)][instruct.charAt(1)] = instruct.substr(2,3); trace(commandArray["A"]); } } Все это я хочу запихать в двумерный массив так, чтобы в commandArray были массивы с названием Первых букв в строке, в которых лежат элементы с названием из вторых символов строк, в которых лежат остальные три буквы. Соответственно чисто теоритически, в данном примере должен быть массив commandArray, в котором есть массив A, в котором два массива: 1, в котором лежит 1RA и 0, в котором лежит 1HO. Но он выдает: TypeError: Error #1010: Термин не определен и не имеет свойств. Код конечно диковатый, но все же, что собственно не так?) Последний раз редактировалось fantomasdnb; 03.10.2011 в 22:22. |
|
|||||
if (commandBlock.added)
{
var numChildren:uint = this.codeCont.codePlateSp.numChildren;
for (var i:uint = 0; i < numChildren; i++)
{
var block:commandBlock = this.codeCont.codePlateSp.getChildAt(i) as commandBlock;
instruct = block.getCommand;
commandArray[instruct.charAt(0)] = [];
commandArray[instruct.charAt(0)].push(instruct.charAt(1));
commandArray[instruct.charAt(0)][instruct.charAt(1)] = instruct.substr(2,3);
trace(commandArray["A"]);
}
И кстати, push кладёт значение на индекс length, а [] обращается по ключу. Т.е. Массив ["a","b",c"], сделать push("d") - получим ["a","b","c","d"], при этом индекса "d" не существует: существует элемент с индексом 3, значение которого "d".
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 49
|
да я писал эту зеленую строчку, но результат получался не такой какой надо, трейс выводил:
1,1RA 1HO тоесть он явно выводил не полно. Подскажите тогда , как сделать не через пуш, чтобы был индекс ? |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 49
|
блин, я не так сказал наверное. Вобщем я хочу, чтоб по сути обращение было:
Если я просто равно напишу, я просто значение заменю значение, а мне надо чтобы в А добавлялись другие массивы. |
|
|||||
|
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 49
|
и так код теперь выглядит так
if (commandBlock.added) { var numChildren:uint = this.codeCont.codePlateSp.numChildren; for (var i:uint = 0; i < numChildren; i++) { var block:commandBlock = this.codeCont.codePlateSp.getChildAt(i) as commandBlock; instruct = block.getCommand; commandArray[instruct.charAt(0)]={}; commandArray[instruct.charAt(0)][instruct.charAt(1)] = instruct.substr(2,3); } trace(commandArray["A"]["1"]); trace(commandArray["A"]["0"]); } undefined 1HO |
|
|||||
|
Ну да. Вы создаете на каждой итерации новый хэш. А надо создать его один раз. А в цикле всё повторяется. Скажите мне, что надо сделать?
![]()
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 49
|
ну собственно, я пытаюсь сделать реализацию машины Тьюринга. Я собираю все инструкции, которые были введены. Соответственно, для каждого состояния (A,B,C), в зависимости от символа на ленте (1,0) выполнять команду 1RH,0HO. Решил использовать подобную структуру, т.к. очень легко искать действие по состоянию и символу.
|
|
|||||
|
Я не о том )
Я ожидал услышать что-то вроде: "Ааа, ну надо ведь чтобы хэш создался один раз. Надо вынести его за тело цикла!", но Ваш ответ тоже неплох )
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:51. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|