| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sumo 12.01.2019 06:45 / 12.01.2019 06:46
... можно написать простенькую обвязку вокруг хеша:@CLASS
List
@OPTIONS
locals
@create[]
$self._list[^hash::create[]]
@count[]
$result(^self._list.count[])
@GET_DEFAULT[aIndex]
$result[$self._list[$aIndex]]
@GET[aType]
$result[]
^switch[$aType]]{
^case[def;bool]{$result(^self.count[] > 0)}
^case[expression;double]{$result(^self.count[])}
^case[hash][$result[^hash::create[$self._list]]]
}
@GET_first[]
$result[^self._list.at[first]]
@GET_last[]
$result[^self._list.at[last]]
@append[aItem]
$result[]
$self._list.[^self.count[]][$aItem]
@foreach[aNumName;aItemName;aCode;aSep]
$result[^self._list.foreach[k;v]{$caller.[$aNumName][$k]$caller.[$aItemName][$v]$aCode}{$aSep}]И не делать ничего руками в коде с хешем: $TX[^List::create[]]
$hD1[$.type[D] $.device[D1] $.deviceType[T1] $.status[S1] .... ]
$hS1[$.type[S] $.sensor[S1] $.value[V1] .... ]
^TX.append[$hD1]
^TX.append[$hS1]
^TX.foreach[_;v]{
^switch( $v.type ){
^case[D]{
^switch[$v.deviceType]{
^case[T1]{ ^checkDeviceT1[$v] }
^case[T2]{ ^checkDeviceT2[$v] }
^case[DEFAULT]{ ^sendAlert[new device type ${v.deviceType}] }
}
}
^case[S]{ ^checkSensor[$v] }
^case[DEFAULT]{ ^sendAlert[new type ${v.type}] }
}
}