1 (изменено: John_Science, 2016-08-29 17:07:18)

Тема: AHK: Проблема с массивом в объекте класса

Я реализовал самый простейший класс ограниченной очереди, однако ,вопреки моим ожиданиям, он не заработал.
После недолгих разбирательств я обнаружил, что проблема возникает тогда, когда я обращаюсь к элементам массива-свойству моего объекта.

Вот код:

class LimitedQueue
{	
	__New()
	{
		this.size := 3
		this.cells := Array()
	}
	
	addElement(element)
	{
		if (this.cells.MaxIndex() < this.size)
		{
			this.cells.Push(var)
		}
		else
		{
			Loop, % this.size - 1
				this.cells[A_Index] := this.cells[A_Index + 1]
			this.cells[this.size] := var
		}
	}
	
	Display()
	{
		arr := this.cells
		Loop, % arr.MaxIndex()
		{
			s := arr[A_Index]
			Display(%s%)
		}
	}
}

Display(s)
{
	MsgBox, %s%
}

obj := new LimitedQueue()

obj.addElement("Hello world")
obj.addElement("Hello world")
obj.addElement("Hello world")
Display(obj.cells[1])

Я предполагаю с чем это связано. Я слышал, что нельзя объявлять псевдо-массивы в функции, однако не знал, как это работает по отношению к массивам, созданным функцией Array(). Если это так, то какие элегантные варианты решения проблемы вы могли бы мне посоветовать? Также было бы интересно

2

Re: AHK: Проблема с массивом в объекте класса

John_Science пишет:
this.cells.Push(var)

А откуда там var взялась и чему она равна?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Проблема с массивом в объекте класса

teadrinker
Простите. Не тот файл скопировал.

4 (изменено: John_Science, 2016-08-29 17:55:26)

Re: AHK: Проблема с массивом в объекте класса

Благодарю. Я крайне глупый человек.