Параметры функции

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

Функция может принимать параметры. Параметры позволяют передать в функцию некоторые данные. Параметры перечисляются в скобках после имени функции имеют следующее определение:

название_параметра : тип_данных

После названия параметра через двоеточие указывается его тип.

Например, определим функцию с одним параметром:

fn square(n: i32)
{
	let result = n * n;
    println!("Квадрат числа {} равен {}", n, result);
}

Функция square имеет один параметр, который называется n и который имеет тип i32, то есть представляет целое число. Внутри функции вычисляем квадрат этого числа и выводим его на консоль.

Поскольку функция принимает параметр, то при вызове функции нам обязательно надо передать для этого параметра значение, которрое соответствует его типу. Значение которое передается параметру при вызове функции назывется аргументом. То есть в данном случае нам надо передаться в функцию при ее вызове какое-нибудь целое число.

fn main(){
	square(5);
	square(6);
	square(4);
}

fn square(n: i32)
{
	let result = n * n;
    println!("Квадрат числа {} равен {}", n, result);
}

В данном случае функция square вызывается три раза, и каждый раз ей передается разное значение. Консольный вывод программы:

Квадрат числа 5 равен 25
Квадрат числа 6 равен 36
Квадрат числа 4 равен 16

Если для функции надо определить несколько параметров, то они перечисляются через запятую. Например, определим функцию с двумя параметрами:

fn main(){
	show_user("Tom", 36);
}
fn show_user(name: &str, age: i32)
{
	println!("Информация о пользователе");
	println!("Имя: {}", name);
	println!("Возраст: {}", age);
}

Консольный вывод программы:

Информация о пользователе
Имя: Tom
Возраст: 36

Первый параметр функции show_user() называется name и представляет тип &str, то есть грубо говоря строку. А второй параметр - age представляет целое число. Поэтому при вызове функции в нее надо передать два значения - строку и число. Причем значения передаются параметрам по позиции. То есть первый параметр представляет тип &str, поэтому первым аргументом в функцию передается строка. Второй параметр представляет целое число, поэтому вторым аргументом передается целое число. То есть передаваемые аргументы соответствует параметрам по типу.

Изменение значения параметра

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

fn main(){
    square(5);
    square(6);
}
 
fn square(n: i32)
{
    n = n * n;
    println!("Квадрат числа равен {}", n);
}

Здесь мы пытаемся заменить значение параметра n квадратом его первоначального значения. Но при компиляции компилятор радостно сообщит нам "cannot assign to immutable argument".

Если нам действительно необходимо изменять значение параметра, то такой параметр необходимо определить с ключевым словом mut:

fn main(){
    square(5);
    square(6);
}
 
fn square(mut n: i32)
{
    n = n * n;
    println!("Квадрат числа равен {}", n);
}

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