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