是否可以在使用任意数据类型的MATLAB函数中创建持久变量?例如,我想在MATLAB函数中创建一个持久的containers.Map
变量。我怎样才能做到这一点?
使用persistent
关键字定义为持续定义的所有变量都将初始化为double
数据类型的空数组。您可以通过检查使用isempty
是否为空并执行初始化,将它们重新定位为所需的任何数据类型。您还可以检查以确保它是double
,以防万一您有空的containers.Map
对象不想强制重新定位。
function persist(key, value)
persistent container
if isa(container, 'double') && isempty(container)
container = containers.Map();
end
container(key) = value;
end
MATLAB类属性可以用于此属性,因为它们可以仅限于特定的数据类型。例如:
classdef foo
properties
prop@char scalar = 'A' % will only accept char inputs, not numeric
end
end
然后,如果提供的值是不正确的类型,则试图更新this.prop
的每种方法都会失败。如果更新成功,您也可以更新persistent
变量。
此功能已正式合并到R2017A中,但已有一段时间的无证件方式。
要进一步阅读此博客文章。