Область видимости переменных и констант

Последнее обновление: 01.04.2023

Все переменные имеют определенную область видимости (scope). Область видимости представляет часть программы, в пределах которой можно использовать объект. Как правило, область видимости ограничивается блоком кода, который заключается в фигурные скобки. В зависимости от области видимости создаваемые объекты могут быть глобальными и локальными.

Если определить переменную внутри фигурных скобок, то есть внутри некоторого блока кода, то такая переменная является локальной и доступна только внутри этого блока кода.

Рассмотрим следующий код:

const global = "global";    // глобальная константа

void main() {
	const local_main = "main";  // локальная константа - доступна только в main

	if (true) {
		const local_if ="if";   // локальная константа - доступна только в блоке if
    
		print(global);
		print(local_main);
		print(local_if);
	}   // конец жизни константы local_if

	print(global);
	print(local_main);
	// print(local_if); // ! Ошибка
} // конец жизни константы local_main

Константа global определена вне функции main и вне любых фигурных скобок. Поэтому она является глобальной и видна в любом месте текущего файла после своего определения. Подобные константы и переменные еще называются константами/переменными верхнего уровня (top level).

Константа local_main определена внутри функции main. Поэтому она является локальной и видна в любом месте функции main. Однако вне функции main она не видна, и к ней нельзя обратиться.

Константа local_if определена в блоке конструкции if, который ограничен фигурными скобками. Эти же фигурные скобки ограничивают область видимость, в рамках которой доступна константа local_if. Вне блока if константа local_if не существует.

Другой пример:

const global = "global";
void main() {
	const local_main = "main";

	print(global);
	print(local_main);
	// print(local_hello); // Так нельзя - константа local_hello не доступна
}

void hello(){
	const local_hello = "hello";
	print(global);
	print(local_hello);
	// print(local_main); // Так нельзя - константа local_main не доступна
}

Здесь уже определено две функции. Константа global является глобальной и соответственно доступна в любой функции данного файла. А вот константа local_main, поскольку определена в функции main, вне этой функции (например, в функции hello) не доступна. Аналогично консатнта local_hello, определенная в функции hello, вне этой функции не доступна.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850