今天偶然發現了Matlab可以像Python一樣,有類函數的概念。具體這么做:
需求
假設現在需要設計一個數學計算類,類下面可以自己定義加減乘除,然后調用這個類實現混合運算。
實現
創建一個 my_math.m
(即和類函數名字一樣,這是matlab腳本的傳統要求) 腳本文件,內容如下:
%% 定義類函數
function m = my_math
m.add = @my_add;
m.del = @my_del;
m.mult = @my_mult;
m.mix = @my_mix;
end
%% 定義加法
function out = my_add(x,y)
out = x+y;
end
%% 定義減法
function out = my_del(x,y)
out = x-y;
end
%% 定義乘法
function out = my_mult(x,y)
out = x*y;
end
%% 定義混合運算
function out = my_mix(x,y)
m = my_math; % 實例化
out = m.mult(m.add(x,y),m.del(x,y));
end
然后你可以在控制台調用它:
>> m=my_math;
>> m.mix(3,1)
ans =
8
總結
- 構造類的基本流程就是 先定義類函數,在類函數里構造子函數,並通過句柄
@
對應的函數 - 子函數可以獨立存在,貼到類函數下面(注意函數要有完整的結構,用
end
結束一個函數) - 調用時,先實例化一個類,然后調用子函數即可
- 子函數內部可以繼續調用類函數下的其他子函數