跳轉到內容

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' 欄位,並將結果複製回原始結構體。

華夏公益教科書