在Matlab中定义结构化类型

6qfn3psc  于 2023-06-23  发布在  Matlab
关注(0)|答案(1)|浏览(127)

我很确定在Matlab编程/脚本语言中有一个功能,但我找不到它。我想我在谷歌上搜索错误的词了。
我想做的是定义一个数据项类别,这些数据项将共享相同的内部结构。
像这样:

I declare PERSON to be a type of structure consisting of:
   FIRST NAME  : text;
   LAST NAME : text;
   PHONE NUMBER : integer;;

Now I declare the following variables:

PERSON MIKE

PERSON JANE

我该怎么做?

g6ll5ycj

g6ll5ycj1#

您要搜索的类型为**'Class'**

classdef Person
properties
    FirstName string % *
    LastName string 
    PhoneNumber double {mustBePositive,mustBeInRange(PhoneNumber,0000000000,99999999999)} % **
end
end

一些注意事项:

  • 类必须在它自己的单独的.m文件中,该文件必须与类本身具有相同的名称
  • 您可以在属性部分本身中设置验证。它可以是类型(*)或更复杂的性质(**)。你可以在这里阅读更多Class Validation Docs
  • 类可能有也可能没有方法,但仍然给予它们一个外观。一些方法,如构造函数,...在任何情况下都是有用的。
  • 注意不要覆盖已经存在的类(名称很重要)

要调用类,请执行以下操作:

mike = person; %creates mike object
 mike.LastName='VeryImportantSurname' %assigns to its property

如果你要使用构造函数,代码(不完整的情况下处理,只是一个例子)将改为:

classdef person
    properties
        FirstName string
        LastName string
        PhoneNumber double ...
            {mustBePositive,mustBeInRange(PhoneNumber,0000000000,99999999999)}
    end

    methods
        function obj=person(Fn,Ln,Pn)
            if nargin == 3
                obj.FirstName=Fn;
                obj.LastName=Ln;
                obj.PhoneNumber=Pn;
            end
        end
    end
end

这将允许直接调用和分配:

mike=person('Mike','VeryImportantSurname',87345929) %creates mike object and assigns properties

相关问题