Конструкция match

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

Конструкция match оценивает некоторое выражение и сравнивает его с набором значений. И совпадении значений выполняет определенный код.

Конструкция match имеет следующее формальное определение:

match выражение 
{
	значение1 => действия1,
	значение2 => действия2,
	.................
	_ => действия,
}

После оператора match указывается сравниваемое выражение, например, переменная. Далее идет перечисление значений, с которыми идет сравнение.

После каждого значения после оператора => идут действия, которые выполняются, если это значение соответствует сравниваемому выражению.

В конце после всех значений указывается универсальное значение _, действия которого выполняются, если ни одно из значений не соответствуют сравниваемому выражению.

Например:

fn main(){
	let num = 2;
	match num
	{
		1=>println! ("один"),
		2=>println! ("два"),
		3=>println! ("три"),
		_=>println! ("непонятно")
	}	
}

Здесь в конструкции match значение переменной num последовательно сравнивается со значениями 1, 2, 3. Поскольку переменная num равна 2, то она соответствует значению

2=>println! ("два"),

Соответственно на консоль будет выведена строка "два".

Возьмем другую ситуацию:

fn main(){
	let num = 23;
	match num
	{
		1=>println! ("один"),
		2=>println! ("два"),
		3=>println! ("три"),
		_=>println! ("непонятно")
	}	
}

Здесь значение переменной num не соответствует ни одному из значений в конструкции match, поэтому будет применяться код

_=>println! ("непонятно")

Конструкция match может возвращать значение. В этом случае мы можем присвоить его переменной:

fn main(){
	let num = 3;
	let result = match num
	{
		1=> "один",
		2=> "два",
		3=> "три",
		_=> "непонятно"
	};
	println!("result = {}", result);	// result = три	
}

Здесь результат конструкции match присваивается переменной result. Возвращаемые значения указываются после оператора =>. В данном случае это строки "один", "два", "три", "непонятно". Поскольку переменная num = 3, то конструкция match возвратит строку "три".

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