全局常数。使用它们有什么问题吗?
Global CONSTANTS. Any problem using them?
我已经编程 6 年多了,我一直避免使用全局变量,因为总有其他方法可以解决问题。
今天,我在做一个(大)项目,我们想使用一个永远不会在任何地方修改的数学常数字典。我似乎在互联网上发现的唯一问题是,如果有人覆盖了一个,它可能会破坏整个项目。但由于我的是常量,所以这个问题不适用。
(作为避免人们创建与其中一个常量同名的变量的第二个安全措施,我可能会将它们全部打包在一个全局结构中)
有谁知道使用全局常量仍然会发生的问题吗?
感谢您的回答! :)
在 MATLAB 中,数学常量的最佳选择是使用具有 Constant
属性的属性定义 class。这在文档 here 中有描述,下面是该页面的主要示例:
classdef NamedConst
properties (Constant)
R = pi/180
D = 1/NamedConst.R
AccCode = '0145968740001110202NPQ'
RN = rand(5)
end
end
这样,就无法覆盖值。 (请注意,此示例中可能有些出乎意料的地方 - 属性 RN
的值在每次加载 class 时都会发生变化!我个人不会编写那样的代码...... .)
在 MATLAB 中创建常量的老式标准方法是 write a function. For example pi
是一个函数。可以写成:
function value = pi
value = 3.14159;
end
当然我们可以在MATLAB中覆盖pi
的值,但始终是局部更改,不可能影响到另一个工作区。
我已经编程 6 年多了,我一直避免使用全局变量,因为总有其他方法可以解决问题。
今天,我在做一个(大)项目,我们想使用一个永远不会在任何地方修改的数学常数字典。我似乎在互联网上发现的唯一问题是,如果有人覆盖了一个,它可能会破坏整个项目。但由于我的是常量,所以这个问题不适用。
(作为避免人们创建与其中一个常量同名的变量的第二个安全措施,我可能会将它们全部打包在一个全局结构中)
有谁知道使用全局常量仍然会发生的问题吗?
感谢您的回答! :)
在 MATLAB 中,数学常量的最佳选择是使用具有 Constant
属性的属性定义 class。这在文档 here 中有描述,下面是该页面的主要示例:
classdef NamedConst
properties (Constant)
R = pi/180
D = 1/NamedConst.R
AccCode = '0145968740001110202NPQ'
RN = rand(5)
end
end
这样,就无法覆盖值。 (请注意,此示例中可能有些出乎意料的地方 - 属性 RN
的值在每次加载 class 时都会发生变化!我个人不会编写那样的代码...... .)
在 MATLAB 中创建常量的老式标准方法是 write a function. For example pi
是一个函数。可以写成:
function value = pi
value = 3.14159;
end
当然我们可以在MATLAB中覆盖pi
的值,但始终是局部更改,不可能影响到另一个工作区。