根据文档:
MATLAB试图将值转换为指定的类型在运行验证器之前的功能。
这是意想不到的,如果用户想之前检查分配的价值转换。一个增强请求已提交解决这种行为。现在的解决方案是把类验证:
classdefClass1
属性
Property1{isNonNeg}= uint32 (0)
结束
结束
函数isNonNeg (val)
如果~ (isinteger (val) & & val > = 0)
错误(“Property1必须分配一个非负整数的值。”);
结束
结束
这种解决方案的缺点是你不能执行转换后手动运行验证器函数。
或者,你可以切换到创建一个属性的setter方法。注意,setter方法运行后验证您必须完全删除属性验证为了工作:
classdefClass1
属性
Property1
结束
方法
函数obj = set.Property1 (obj, val)
如果~ (isinteger (val) & & val > = 0)
错误(“Property1必须分配一个非负整数的值。”);
其他的
obj。Property1 = val;
结束
结束
结束
结束