Новости | 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}] } } }