将类选择传递给函数

4个视图(过去30天)
弗洛里安·罗辛
弗洛里安·罗辛 2021年8月16日
评论: 马特J 2021年8月19日
大家好。
我有一个关于课堂的问题。我是否可以将类名交给函数,以便函数使用该特定类?
我可以使用字符串和switch语句,但有更简单的方法吗?
有关我希望它如何工作的详细信息,请参见下面的示例。
假设我有一个超类Employes,Employes有一个抽象的函数设置。
classdef雇员
性质(摘要)
名称
终止
方法(摘要)
设置(对象、名称、参数)
终止
终止
我有两个子类要雇用,一个是推销员,另一个是开发者。两者都有自定义设置功能。
classdef售货员
性质
售出=0;
终止
方法
作用设置(对象、名称、参数)
论据
Obj售货员;
名称一串;
arg.出售int=0;
终止
对象名称=名称
对象已售出=参数已售出;
终止
终止
终止
classdef开发者<雇员
性质
语言="";
终止
方法
作用设置(对象、名称、参数)
论据
Obj售货员;
名称一串;
arg.language一串="";
终止
对象名称=名称
Obj.language=arg.language;
终止
终止
终止
现在,我想在一个seroperate函数中设置我的员工,该函数创建一个包含一种员工的数组。
作用Staff=CreateStaffArray(员工类型,长度)
Staff=EmployeType.empty(长度,1)
%然后是一些填补工作人员
.
.
.
终止
员工类型可能是开发人员或销售人员。
有办法做到这一点吗?

公认的答案

马特J
马特J 2021年8月16日
编辑:马特J 2021年8月16日
在我看来,您的设置函数应该转换为接受零输入参数的类构造函数。没有任何意义 论点 如果只是将值指定给属性,则进行验证。您可以在属性定义块中执行验证。
classdef雇员
性质(摘要)
名称一串;
终止
终止
classdef销售员<员工
性质
售出=0;
终止
方法
作用Obj=销售员(姓名,已售出)
如果~nargin,回来;终止
对象名称=名称;
对象已售出=已售出;
终止
终止
终止
classdef开发者<员工
性质
语言一串="";
终止
方法
作用Obj=开发人员(姓名、语言)
如果~nargin,回来;终止
对象名称=名称;
对象语言=语言;
终止
终止
终止
一旦你做到了这一点,你可以简单地使用 feval() 要调用所需的构造函数,请执行以下操作:
作用Staff=CreateStaffArray(员工类型,N)
职员(N)=feval(员工类型);
%然后是一些填补工作人员
.
.
.
终止
2评论
马特J
马特J 2021年8月19日
解决这个问题的最简单方法是将Employee设置为值类(而不是句柄)。否则,您必须使用循环并分别构造每个Staff(i)。

登录以发表评论。

更多答案(0)

s manbetx 845


释放

R2020b

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!