gpt4 book ai didi

oop - 我可以在 MATLAB 中为类属性分配类型吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:13:01 25 4
gpt4 key购买 nike

我刚开始使用 MATLAB 作为面向对象的环境,我正在编写我的第一个类来描述网络数据包。一个简单的例子如下

classdef Packet

properties
HeaderLength
PayloadLength
PacketType
end

end

我想明确指定 HeaderLengthPayloadLength 都是 uint16,而 PacketType 是一个字符串。有办法做到这一点吗?

最佳答案

存在一个undocumented syntax强制执行属性类型:

classdef Packet
properties
HeaderLength@uint16
PayloadLength@uint16 = uint16(0);
PacketType@char
end
end

如果您尝试设置一个错误类型的属性,您会得到一个错误:

>> p = Packet;
>> p.PacketType = 'tcp';
>> p.HeaderLength = 100;
While setting the 'HeaderLength' property of Packet:
Value must be 'uint16'.

据我所知,除了任何用户定义的类型(只需使用任何类名)。

请注意,如上设置类型似乎会覆盖任何“设置方法”(如果有的话)。

我刚刚发现这种语法在 R2013a 的内部类中使用 (toolboxdir('matlab')\graphics\+graphics\+internal\+figfile\@FigFile\FigFile.m) ,但它也适用于 R2012a,可能也适用于旧版本......

关于oop - 我可以在 MATLAB 中为类属性分配类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7192048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com