我将尝试使用一个枚举类来规定另一个类构造函数中的switch语句的行为。因此,我有以下内容:
从我的枚举类中:
classdef(Enumeration) MyScheme
enumeration
Scheme1, Scheme2, Scheme3
end
end
然后是使用这个类的代码:
classdef MyClass < handle
methods
function c = MyClass(scheme, varargin)
switch(scheme)
case MyScheme.Scheme1
% Do stuff with varargin
case MyScheme.Scheme2
% Do different stuff with varargin
case MyScheme.Scheme3
% Do yet something else with varargin
otherwise
err('Not a valid scheme');
end
end
end
end
然而,无论我传递给构造函数什么方案,它都直接进入第一个 case。当我添加断点并逐步执行并手动检查相等性 (
scheme == MyScheme.Scheme1
) 时,它会识别出两者不相等,并返回此检查的 0,因此我完全不明白为什么它仍然会进入第一个 case。如果我更改 case 的顺序,它将只进入第一个 case。据我所知,这与 此 MATLAB 帮助文档 中的 "在 switch 语句中使用枚举" 部分具有相同的语法,但也许我忽略了一些明显的东西?