跳转到内容

MATLAB 编程/高级主题/面向对象编程/结构体数组

来自维基教科书,开放的书籍,用于开放的世界



Octave 中定义和使用的结构体

[编辑 | 编辑源代码]

Octave 中的结构体将称为字段的不同数据类型分组到单个对象中。通过字段名称访问字段。

声明结构体

[编辑 | 编辑源代码]

通过为结构体的字段赋值来声明结构体。句点 (.) 将字段名称和结构体名称隔开

 >> city.name = 'Liege';
 >> city.country = 'Belgium';
 >> city.longitude = 50.6333;
 >> city.latitude = 5.5666;

只需输入结构体的名称即可显示结构体的字段及其值

>> city
city =
{
  name = Liege
  country = Belgium
  longitude =  50.633
  latitude =  5.5666
}

操作结构体

[编辑 | 编辑源代码]

结构体可以像任何对象一样被复制

 >> city_copy = city;

在大多数情况下,可以使用句点运算符操作结构体的字段。可以通过以下方法覆盖字段的值:

 >> city.name = 'Outremeuse';

同样,可以通过以下方法检索字段的值:

 >> city.name
 ans = Outremeuse

isstruct 函数可用于测试对象是否为结构体。fieldnames 函数将所有字段名称作为元胞数组返回

>> fieldnames(city)
ans =
{
  [1,1] = name
  [2,1] = country
  [3,1] = longitude
  [4,1] = latitude
}

要测试结构体是否包含给定名称的字段,可以使用 isfield 函数

>> isfield(city,'name')
ans =  1

可以使用 getfield 提取字段的值

 >> getfield(city,'name')
 ans = Liege

或使用

>> city.('name')
ans = Liege

以类似的方式,可以使用 setfield 设置字段的值

 >> setfield(city,'name','Outremeuse')

当程序执行期间确定结构体名称时,isfieldgetfieldsetfield 函数很有用。

可以使用 rmfield 函数删除结构体数组中的字段。

 >> city = rmfield(city, 'name');

将从 city 结构体中删除 'name' 字段,并将结果复制回原始结构体。

华夏公益教科书