如何访问被调用函数中的结构元素?

How do I access structure elements in called function?

我有一个包含两个字段的结构,我正在将这个结构传递给 scilab 中的一个函数。 如何在被调用函数中访问该结构的元素?

%Scilab console
S=struct('day',30,'month','may');
fun(S);

%called function
function fun(element)
    fields=fieldnames(element);
    disp(element.fields(1));
    disp(element.fields(2));
endfunction;

我尝试了一些不同的方法,比如

disp(element.(fields(1)));
disp(element.(fields(2)));

并将“()”更改为“{}”和“[]”,但其中 none 给出了我需要的输出

有什么办法吗?

提前致谢=)

在不知道字段数量或字段名称的情况下访问所有元素

使用getfield you can extract fields by name. If you iterate through all fieldnames returned by fieldnames你可以获得所有字段。请参阅下面的示例。

function fun(element)
    fields=fieldnames(element);
    for i=1:length(fields(1,:))-1
        fieldname = fields(i)
        fielddata = getfield(fields(i), element)

        printf('%s: %s\n', string(fieldname), string(fielddata))
    end
endfunction;

在知道字段名称的情况下访问字段

如果您知道结构的字段名,您可以直接调用它们。

function fun2(date_struct)
       printf('day: %s\n', string(date_struct.day))
       printf('month: %s\n', string(date_struct.month)) 
endfunction