我有一个表示二叉树中节点的节点数据结构。我有一些与整个树相关的数据,而不是在每个节点中存储它的副本,我只是将索引存储在我用来访问这个全局数据的节点中。所以我的Node
类有一个常量属性TreeData
,它包含我想要的所有节点的数据:
classdef Node
properties (Constant)
treeData = TreeData
end
...
...
end
将TreeData定义为
classdef TreeData < handle
properties
s
w
end
end
这样可以正常工作,但有一个额外的类(TreeData
)只是为了定义两个应该可供所有节点访问的变量。那么有更好的方法吗?在另一种语言中,我只是在Node
类中声明一个静态变量来保存这些数据,但在MATLAB中,您似乎需要静态变量的getter和setter,这最终会导致需要编写更多的代码比这个TreeData
班。
我不仅仅想要一些有用的东西,我已经拥有它,我正在寻找最有效/最佳实践的方法,使数据结构可用于MATLAB中所有类的实例。
答案 0 :(得分:2)
最简单的方法可能是定义一个全局变量。如果你使用足够长的名字,你很可能永远不会有命名冲突。很简单,是的。最佳实践,不。
Matlab does have static-like variables,但他们使用关键字persistent
。它们是声明它们的函数的本地函数,但它们的值在函数调用之间保留在内存中。它类似于其他语言允许您为函数创建静态局部变量的方式。
在不知道如何使用此变量的情况下,很难说出最适合您情况的解决方案。如果变量是计数器,则可以创建adjustCounter
函数,该函数接受调整计数器的数量并返回新值。获取计数器值只是告诉它调整0。
Here是另一个类似的问题,有几个不同的建议解决方案。