C++17 özellikleri: if ve switch içinde değişken tanımlama

C++17 ile birlikte if ve switch koşullarından önce değişken tanımlayabilir böylece değişkenin erişilebilir olduğu alanı (scope) yalnızca kullancağımız bloklar tarafında erişilebilir olacak şekide daraltabiliriz.

Aşağıdaki kodun problemi, koşul test edildikten sonra, amount değişkeninin hala erişilebilir olmasıdır:

auto amount = Custormer -> inputBox.text().toInt(); 

if( amount < balance )
{
	giveMoney();
	updateBalance();
	...
}

// amount still available here

Bu problemi fazladan bir scope ekleyerek çözebiliriz:

{
	auto amount = Custormer -> inputBox.text().toInt(); 

	if( amount < balance )
	{
		giveMoney();
		updateBalance();
		...
	}
}

// amount is not available here

Bu yazının konusu ve en elegan çözüm ise:

if( auto amount = Custormer -> inputBox.text().toInt(); amount < balance )
{
	giveMoney();
	updateBalance();
	...
}

// amount is not available here

Aynı şeyi switch için de yapabiliriz.


C++17

124 Words

2018-07-10 03:00 +0300