详见关键字:global
A.全球的变量是可以在Octave中的任何位置访问的变量。这与局部变量形成了鲜明对比,局部变量只有在显式传递的情况下才能在其当前上下文之外访问,例如在调用函数时将其作为参数包含(fcn (local_var1, local_var2)
).
变量通过使用语句为全局global
语句语句。以下语句均为全局语句。
global a global a b global c = 2 global d = 3 e f = 5
请注意global
限定符仅扩展到statementindicator的下一个末尾,该指示符可以是逗号(,),分号(;),或换行符('\n'’). 例如,下面的代码语句了一个全局变量,a,和一个局部变量b值1被赋值给它。
global a, b = 1
全局变量只能在中初始化一次global
语句例如,在执行以下代码之后
global gvar = 1 global gvar = 2
全局变量的值gvar
是1,而不是2。发布clear gvar命令不会更改上述行为,但clear all做
为了访问一个通用变量,有必要在函数体中将变量语句为全局变量。例如
global x function f () x = 1; endfunction f ()
做不设置全局变量的值x
至1。而是一个名为的局部变量x
,被创建并赋值了值1。为了更改全局变量的值x
,您还必须语句它在函数体中是全局的,如下所示
function f () global x; x = 1; endfunction
在函数参数列表中传递全局变量将生成本地复制不修改全局值。例如,给定函数
function f (x) x = 0 endfunction
以及的定义x
作为函数外部的全局变量,
global x = 13
表达式
f (x)
将显示的值x
在函数内部作为0,但的值x
在函数外部保持不变,因为该函数与复制它的参数。
编程注意事项:虽然全局变量偶尔是解决编码问题的正确方法,但现代最佳实践不鼓励使用它们。依赖于全局变量的代码在不同的用户之间可能表现得不可预测,并且很难调试。这是因为全局变量可能会引入系统性更改,因此很难将错误定位到特定函数或函数中的特定循环。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2