Gab*_*abe 7 oop matlab get class set
我有一个这样的课:
classdef Vehicle < handle
%Vehicle
% Vehicle superclass
properties
Is_Active % Does the vehicle exist in the simualtion world?
Speed % [Km/Hour]
end
methods
function this = Vehicle(varargin)
this.Speed = varargin{1}; % The speed of the car
this.Is_Active = true;
end
end
end
Run Code Online (Sandbox Code Playgroud)
我以单元格形式创建了我的Vehicle级对象(不要问我为什么 - 这是全局设置的外行解决方法):
Vehicles{1} = Vehicle(100);
Vehicles{2} = Vehicle(200);
Vehicles{3} = Vehicle(50);
Vehicles{1}.Is_Active = true;
Vehicles{2}.Is_Active = true;
Vehicles{3}.Is_Active = true;
Run Code Online (Sandbox Code Playgroud)
我的问题:1.有没有办法在一个命令中设置所有三个对象的活动状态?2.有没有办法在一个命令中获得所有三个对象的速度?3.有没有办法在一个命令中查询哪些车辆比X快?
谢谢加布里埃尔
对于同一类的成员,您可以使用圆括号(常规数组):
Vehicles(1) = Vehicle(100);
Vehicles(2) = Vehicle(200);
Vehicles(3) = Vehicle(50);
Run Code Online (Sandbox Code Playgroud)
要设置所有对象,请使用deal:
[Vehicles(:).Is_Active] = deal( true );
Run Code Online (Sandbox Code Playgroud)
您也可以首先初始化一个对象数组.
对于您的问题(2)和(3),语法等同于MATLAB结构的语法:
speedArray = [Vehicles.Speed];
fasterThanX = Vehicles( speedArray > X );
Run Code Online (Sandbox Code Playgroud)