今天偶然发现了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
结束一个函数) - 调用时,先实例化一个类,然后调用子函数即可
- 子函数内部可以继续调用类函数下的其他子函数