Простой класс для перебора (итератор) хэша типа [1][2][3] ... [32323]. Если нужно, что-то вывести по-порядку.
@CLASS
List
# <summary>
# Для перебора хэша.
# </summary>
@create[_hash]
# Если передали в хэш, строим на основе него
^if(def $_hash){
$self.hash[$_hash]
$self.current[$self.hash.[1]]
}{
# Если нет, то создаем новый
$self.hash[^hash::create[]]
}
$self.index(1)
@hasNext[]
^if(def $self.hash.[$self.index]){
$self.current[$hash.[$index]]
^self.index.inc[]
$result(true)
}{
$self.index(1)
$result(false)
}
@addItem[item][nextIndex]
$nextIndex(^self.hash._count[])
^nextIndex.inc[]
$self.hash.[$nextIndex][$item]
Пример использования (где $values хэш):
$list[^List::create[$values]]
^while(^list.hasNext[]){
$list.current <br/>
}
Вообще использовать массивы, как правило, не имеет смысла, то есть использовать только если сильно надо :-)
^list.getCurrent[] не стал использовать, т.к. нельзя сделать ^list.getCurrent[].nodeValue к примеру.