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