я хочу получить имена полей структуры данных. Это возможно? Мой план состоит в том, чтобы написать процедуру toString() для создания дампа заданной структуры данных. Например, я мог бы напечатать все имена полей и значения ds как JSON.
Получение имен полей структуры данных
comment
замечательная идея. Но не думайте, что это возможно. Только динамические языки, то есть то, что позволяет присваивать тип переменной во время выполнения, предоставляют программе способ вывести список свойств переменной.
- person RockBoro   schedule 12.02.2021
comment
@RockBoro вы можете быть удивлены, посмотрите мой ответ. ;)
- person Charles   schedule 12.02.2021
comment
@RockBoro - это неправильно. Нет ничего, что могло бы помешать статически типизированному языку раскрыть свойства переменной во время выполнения. Не все языки со статической типизацией делают это, но это просто дизайнерское решение, а не техническая проблема. Действительно, тот факт, что типы замораживаются во время компиляции, сделал бы это еще проще для статически типизированного языка (если бы он захотел), чем для динамически типизированного (который часто должен).
- person John Y   schedule 15.02.2021
Ответы (1)
Хотя RPG на самом деле не поддерживает отражение, как, например, C#, за последние несколько лет IBM добавила открытый доступ.
Первоначально открытый доступ работал с кодами операций файлового ввода-вывода. Затем IBM для версии 7.2+ добавила операцию DATA-INTO. -код для разбора в структуру данных. Осенью 2019 г. для версии 7.3+ IBM добавила DATA-GEN код операции для генерации из структуры данных.
Вы можете написать свой собственный парсер или генератор.
Тем не менее, Скотт Клемент любезно предоставил синтаксический анализатор (YAJLINTO) и генератор (YAJLDTAGEN) для своего и Дэвида Руссо исходного порта IBM i с открытым исходным кодом для Еще одна библиотека JSON (YAJL).
person
Charles
schedule
12.02.2021
Спасибо большое, посмотрю :)
- person bensen; 14.02.2021
@bensen не забудьте пометить ответ как принятый, если считаете, что он ответил на ваш вопрос.
- person Charles; 15.02.2021