Меня интересует общая проблема доступа к полю, которое может быть похоронено на произвольное количество уровней глубоко в содержащей структуре. Ниже приведен конкретный пример использования двух уровней.
Скажем, у меня есть структура верхнего уровня
, которую я определяю из командной строки MATLAB следующим образом:
midlevel.bottomlevel = 'foo';
toplevel.midlevel = midlevel;
Я могу получить доступ к структуре среднего уровня
, передав имя поля как строка, например:
fieldnameToAccess = 'midlevel';
value = toplevel.(fieldnameToAccess);
, но я не могу получить доступ к структуре нижнего уровня
таким же образом - следующий недопустимый синтаксис:
fieldnameToAccess = 'midlevel.bottomlevel';
value = toplevel.(fieldnameToAccess); %# throws ??? Reference to non-existent field 'midlevel.bottomlevel'
Я мог бы написать функцию, которая просматривает fieldnameToAccess
на периоды, а затем рекурсивно выполняет итерацию, чтобы получить желаемое поле, но мне интересно, есть ли какой-нибудь умный способ использовать встроенные модули MATLAB, чтобы просто получить значение поля напрямую.