Удаление строки из таблицы при её переборе
G_Z 18.07.2023 21:30
/ 18.07.2023 21:31
Redmine не шевелится, пишу сюда.
Хотим удалить из таблицы строки по условию (можно сделать
select с обратным условием, но хотим вот так — условие не обязательно простое, это может быть список ключей или их частей):
$t[^table::create{p
1
2
3
}]
^t.menu{
^if($t.p < 3){
^t.delete[]
}
}
В таблице остаётся две строки: 2 и 3.
Ожидалась одна — 3.
Делаем то же самое с хешем:
$h[
$.1[]
$.2[]
$.3[]
]
^h.foreach[k;]{
^if($k < 3){
^h.delete[$k]
}
}
Как и ожидалось, остался один ключ 3.
Похоже, дело в смещении указателя при удалении, но простым выводом указателя текущей строки это не подтверждается.
В документации никаких тонкостей работы удаления строки не описано.
Обошёл через
locate + delete, но выглядит странно.
- Удаление строки из таблицы при её переборе, G_Z [M] 18.07.2023 21:30 / 18.07.2023 21:31
- Ответ, moko [M] 19.07.2023 03:12
- Ответ, G_Z [M] 19.07.2023 03:26
- Ответ, moko [M] 19.07.2023 05:38
- Ответ, G_Z [M] 19.07.2023 06:02 / 19.07.2023 06:03
- Ответ, moko [M] 19.07.2023 23:38
- Ответ, G_Z [M] 20.07.2023 02:04
- Ответ, moko [M] 19.07.2023 03:39
- Ответ, G_Z [M] 19.07.2023 03:52