names = fieldnames (struct) ¶names = fieldnames (obj) ¶names = fieldnames (javaobj) ¶names = fieldnames ("javaclassname") ¶返回字符串的元胞数组,其中包含指定输入中字段的名称。
当输入是一个结构体时struct这个names是结构体的元素。
当输入是Octave对象时obj这个names是对象的公共属性。
当输入是Java对象时javaobj或包含Java类名称的字符串javaclassname这个names是对象或类的公共字段(数据成员)。
详见: numfields, isfield, orderfields, struct, properties.
tf = isfield (x, "name") ¶tf = isfield (x, name) ¶如果x是一个结构体,它包括一个名为的元素name.
如果name是字符串的元胞数组,则返回equaldimension的逻辑数组。
详见: fieldnames.
sout = setfield (s, field, val) ¶sout = setfield (s, sidx1, field1, fidx1, sidx2, field2, fidx2, …, val) ¶返回a复制结构体的s与字段成员field设置为值val.
例如
s=结构体();s=设置字段(s,“foo-bar”,42);
这相当于
s.(“foo-bar”)=42;
请注意,普通结构体语法s.foo bar=42不能在此处使用,因为字段名称从于空格字符的原因而不是有效的Octave标识符。对字段名使用任意字符串与兼容MATLAB,并且如果警告IDOctave:language-extension已启用。详见warning_ids.
使用第二个调用表单,设置结构体数组的字段。Theinputsidx选择结构体数组的元素,field指定选定元素的字段名,以及fidx选择字段的哪个元素(如果是数组或元胞数组)。这个sidx, field和fidx可以重复输入以修饰嵌套结构体数组元素。结构体数组索引和字段元素索引必须是元胞数组,而字段名称必须跨接。
例如
s=结构体(“baz”,42);setfield(s,{1},“foo”,{1},“bar”,54)⇒ ans=包含字段的标量结构体:baz=42 foo=包含域的标量结构体;bar=54该示例从一个普通标量结构体开始,其中添加了嵌套标量结构体。在所有情况下,如果结构体索引sidx未指定,则默认为1(标量结构体)。因此,上面的例子可以更简洁地写成setfield(s,“foo”,“bar”,54)
最后,以嵌套结构体数组为例:
sa.foo=1;sa=设置字段(sa,{2},“bar”,{3},“baz”,{1,4},5);sa(2) .巴(3)⇒ ans=包含字段的标量结构体:baz=0 0 5在这里sa其在元素1和2处的字段被插入另一个结构体数组,其第三元素是简单标量结构体。终端标量结构体具有一个包含amatrix值的字段。
注意,可以通过以下方式获得与上述示例中相同的结果:
sa.foo=1;sa(2) .bar(3).baz(1,4)=5
详见: getfield, rmfield, orderfields, isfield, fieldnames, isstruct, struct.
val = getfield (s, field) ¶val = getfield (s, sidx1, field1, fidx1, …) ¶获取名为的字段的值field从结构体或嵌套结构体s.
如果s是一个结构体数组sidx选择结构体数组的一个元素,field指定所选元素的字段名,以及fidx选择字段的哪个元素(在数组或元胞数组的情况下)。有关语法的更完整描述,详见setfield.
详见: setfield, rmfield, orderfields, isfield, fieldnames, isstruct, struct.
sout = rmfield (s, "f") ¶sout = rmfield (s, f) ¶返回a复制结构体(数组)的s与现场f远离的。
如果f是字符串的元胞数组或字符数组,请删除每个命名字段。
详见: orderfields, fieldnames, isfield.
sout = orderfields (s1) ¶sout = orderfields (s1, s2) ¶sout = orderfields (s1, {cellstr}) ¶sout = orderfields (s1, p) ¶[sout, p] = orderfields (…) ¶返回a复制属于s1其中字段按字母顺序排列或从第二输入指定。
给定一个输入结构体s1,按字母顺序排列字段名称。
如果给定了第二个结构体参数,请将字段名排列在s1出现在s2。第二个参数还可以指定字符串的元胞数组中的顺序cellstr第二个自变量也可以是置换向量。
可选的第二个输出参数p是将原始名称顺序转换为新名称顺序的排列向量。
示例:
s = struct ("d", 4, "b", 2, "a", 1, "c", 3);
t1 = orderfields (s)
⇒ t1 =
scalar structure containing the fields:
a = 1
b = 2
c = 3
d = 4
t = struct ("d", {}, "c", {}, "b", {}, "a", {});
t2 = orderfields (s, t)
⇒ t2 =
scalar structure containing the fields:
d = 4
c = 3
b = 2
a = 1
t3 = orderfields (s, [3, 2, 4, 1])
⇒ t3 =
scalar structure containing the fields:
a = 1
b = 2
c = 3
d = 4
[t4, p] = orderfields (s, {"d", "c", "b", "a"})
⇒ t4 =
scalar structure containing the fields:
d = 4
c = 3
b = 2
a = 1
p =
1
4
2
3
详见: fieldnames, getfield, setfield, rmfield, isfield, isstruct, struct.
s = substruct (type, subs, …) ¶创建用于的下标结构体subsref或subsasgn.
例如
idx = substruct ("()", {3, ":"})
⇒ idx =
scalar structure containing the fields:
type = ()
subs =
{
[1,1] = 3
[1,2] = :
}
x = [1, 2, 3;
4, 5, 6;
7, 8, 9];
subsref (x, idx)
⇒ 7 8 9
注意:关键字end不能在中使用subsref或subsasgn用于索引赋值。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2