7.1全局变量

详见关键字: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。发布清除gvar命令不会更改上述行为,但清除所有

为了访问一个通用变量,有必要在函数体中将变量语句为全局变量。例如

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在顶层保持不变,因为该函数与复制它的参数。

编程注意事项:虽然全局变量偶尔是解决编码问题的正确方法,但现代最佳实践不鼓励使用它们。依赖于全局变量的代码在不同的用户之间可能表现得不可预测,并且很难调试。这是因为全局变量可能会引入系统性更改,因此很难将错误定位到特定函数或函数中的特定循环。

 
: tf = isglobal (name)

如果返回truename是一个全局可见的变量。

例如

global x
isglobal ("x")
   ⇒ 1

详见: isvarname, exist.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2