'subsref' 对象数组的行为

Behavior of 'subsref' for arrays of objects

想象一个简单的结构数组,比如:

A = struct('x', {1 2 3}, 'y', {'a' 'b' 'c'});

为这个数组的所有元素请求一个给定的 属性 将给出如下内容:

>> A.x
ans =
     1
ans =
     2
ans =
     3

现在,如果我直接在此数组上显式调用 subsref 函数,它只会检索第一个元素的 属性:

>> builtin('subsref', A, substruct('.', 'x'))
ans = 
     1

为什么?是否有可能显式调用另一个内置方法来检索所有数组元素的 属性?

subsref 方法可以 return 它但不能像 comma separated list 在解释器中获得它的方式。它 return 将它们作为单独的输出参数,这意味着:

>> [a,b,c]=builtin('subsref', A(:), substruct('.', 'x'))
a =
     1
b =
     2
c =
     3

如果愿意,您可以在元胞数组中捕获输出

>> [x{1:numel(A)}]=builtin('subsref', A(:), substruct('.', 'x'))
x = 
    [1]    [2]    [3]