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

时间:2016-05-30 06:06:25

标签: function struct scilab

我有一个带有两个字段的结构,我将这个结构传递给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)));

并更改了'()'到' {}'和' []'但他们都没有给我我需要的输出

有没有办法做到这一点?

提前感谢=)

1 个答案:

答案 0 :(得分:0)

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

使用getfield您可以按名称提取字段。如果遍历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