使数据结构可用于所有类的实例?

时间:2017-04-02 10:42:59

标签: matlab oop data-structures static-variables

我有一个表示二叉树中节点的节点数据结构。我有一些与整个树相关的数据,而不是在每个节点中存储它的副本,我只是将索引存储在我用来访问这个全局数据的节点中。所以我的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中所有类的实例。

1 个答案:

答案 0 :(得分:2)

最简单的方法可能是定义一个全局变量。如果你使用足够长的名字,你很可能永远不会有命名冲突。很简单,是的。最佳实践,不。

Matlab does have static-like variables,但他们使用关键字persistent。它们是声明它们的函数的本地函数,但它们的值在函数调用之间保留在内存中。它类似于其他语言允许您为函数创建静态局部变量的方式。

在不知道如何使用此变量的情况下,很难说出最适合您情况的解决方案。如果变量是计数器,则可以创建adjustCounter函数,该函数接受调整计数器的数量并返回新值。获取计数器值只是告诉它调整0。

Here是另一个类似的问题,有几个不同的建议解决方案。