Сначала я указываю A
как структуру и две другие структуры: B
с одинаковым порядком элементов, а C
имеет другой порядок элементов.
A.x = 11;
A.y = 11;
B.x = 21;
B.y = 22;
C.y = 31; %// Note that I am specifying
C.x = 32; %// y first and x second
A = B; %// Works fine
A = C; %// Works fine
Присвоение A
to B
и C
работает, это поведение, которое я ожидаю от structs - порядок элементов не должен иметь значения.
Теперь я указываю A
как структурный массив вместо структуры и пытаюсь назначить один из его элементов B
и C
соответственно:
clear;
A(1).x = 11;
A(1).y = 12;
B.x = 21;
B.y = 22;
C.y = 31; %// Note that I am specifying
C.x = 32; %// y first and x second
A(1) = B; %// Works fine
A(1) = C; %// Error!
Внезапно MATLAB жалуется на ошибку:
подстрочное присвоение между разнородными структурами
Кто-нибудь знает, почему это происходит и как исправить это элегантным способом?