我想有一个常量列表,随时可以在我编写的任何脚本或函数中使用。例如,我一直在任何脚本的开头定义像hbar(普朗克常数)这样的常量。
我应该:
- 在脚本中创建一个常量列表,并每次加载该脚本我想用
- 或在工作空间中保存常量并加载,
- 或者我是否有可能拥有全局变量,即使当我关闭并重新打开Octave,
- 还是别的什么?
如果您使用GNU Octave,我建议使用杂项包和函数physical_constant
,它已经有335个常量。在你的例子中:
[val, uncertainty, unit] = physical_constant ("Planck constant over 2 pi")
val = 1.0546e-34
uncertainty = 4.7000e-42
unit = J s
如果你不想要这个,那么使用函数,而不是全局变量
正如您所指出的,有几种方法可以解决这个问题。要解决第三个选项,它似乎最接近你想要的精神,你至少有两种方法来处理它。
1)。如果变量需要是可变的。创建一个函数或脚本,将变量初始化为您想要的形式。我将参考MATLAB文档,但基本上应该是相同的。
function initglobals()
global the_answer
the_answer = 42;
end
当你想在脚本中使用这些全局变量时,你首先要向Octave表明你将使用这个变量作为全局变量:
...
global the_answer
disp(the_answer) %prints 42
...
为了更有用,我建议生成一个启动脚本并放入您的.octaverc
文档中。这个启动脚本可以调用这个函数来初始化全局变量。
2)。如果全局变量应该是不可变的(例如,一个物理常数),你的另一个选择是定义一个函数来返回你想要的值。
function [out] = the_answer()
out = 42;
end
那么你可以简单地使用the_answer
来访问你的常量。
在这两种情况下,您都希望将这些函数添加到路径中。创建函数集合并将它们放在某个位置,然后将该位置添加到路径中。文档