作用域 / 编程语言 · 2023年 10月 21日 0

变量作用域

75 次浏览

在世界范围,谈到”李小龙”,大家认为是香港的,在我们村,也有一个”李小龙”,大家一起谈论事情,就指村里的,一言以蔽之,在什么范围表达对应的”李小龙”根据场景。

作用域语法形式

  • 一般而言,根据编程语言语法习惯,以大括号作为作用域区分符的编程语言如下。
    C/ObjC/C++/C#/Java/Go/JS/仓颉 等
  • 函数内部的变量同级别可以共享,不能被它的外部引用,函数内部定义的复合语句同样遵循前面的作用域限定,函数内部定义的函数也遵循上面的原则。总之,听起来很简单,每一对大括号内部就是自己的作用域,每一对大括号有自己的作用域,外部无法访问内部,内部可以访问到外部。
  • PHP static变量和局部变量和C语言很像,不过全局变量只是单个PHP文件全局。函数作用域需要修改全局变量需要显式用global指示。

同名冲突

  • 事实上,在村里聊到”李小龙”有时真的指香港的,究竟指哪里的李小龙,需要明确。
  • C/ObjC/C++/Go 支持变量覆盖。
  • C# 不支持变量覆盖。

枚举

  • C和C++早期版本不同枚举定义不能包含相同名字,会产生冲突。C++11引入了新枚举,作用域为类,解决了这个问题,但使用时需要指定类作用域。

超出范围的作用域

  • C# 7.0开始支持TryParse变量即时定义,而不需要在之前定义。
    int.TryParse(s, out int i) 变量i可以在此语句同级作用域使用。