Функции являются строительными блоками читаемого, обслуживаемого и многократно используемого кода. Функция — это набор операторов для выполнения конкретной задачи. Функции организуют программу в логические блоки кода. После определения функции могут вызываться для доступа к коду. Это делает код многоразовым. Кроме того, функции позволяют легко читать и поддерживать код программы.
Объявление функции сообщает компилятору об имени функции, типе возврата и параметрах. Определение функции обеспечивает фактическое тело функции.
Sr.No | Описание функции |
---|---|
1 |
Определение функции Определение функции TA определяет, что и как будет выполнена конкретная задача. |
2 |
Вызов или вызов функции Функция должна быть вызвана для ее выполнения. |
3 |
Возврат Функции Функции могут также возвращать значение вместе с контролем обратно к вызывающей стороне. |
4 |
Параметризованная функция Параметры — это механизм для передачи значений в функции. |
Определение функции
Определение функции TA определяет, что и как будет выполнена конкретная задача.
Вызов или вызов функции
Функция должна быть вызвана для ее выполнения.
Возврат Функции
Функции могут также возвращать значение вместе с контролем обратно к вызывающей стороне.
Параметризованная функция
Параметры — это механизм для передачи значений в функции.
Определение функции
Определение функции определяет, что и как будет выполнена конкретная задача. Перед использованием функции ее необходимо определить. Тело функции содержит код, который должен быть выполнен функцией. Правила именования функции аналогичны правилам для переменной. Функции определяются с помощью ключевого слова fn . Синтаксис для определения стандартной функции приведен ниже
Синтаксис
fn function_name(param1,param2..paramN) { // function body }
Объявление функции может содержать параметры / аргументы. Параметры используются для передачи значений в функции.
Пример — простое определение функции
//Defining a function fn fn_hello(){ println!("hello from function fn_hello "); }
Вызов функции
Функция должна быть вызвана для ее выполнения. Этот процесс называется вызовом функции . Значения параметров должны передаваться при вызове функции. Функция, которая вызывает другую функцию, называется функцией вызова.
Синтаксис
function_name(val1,val2,valN)
Пример: вызов функции
fn main(){ //calling a function fn_hello(); }
Здесь main () — это функция вызова.
иллюстрация
В следующем примере определяется функция fn_hello () . Функция выводит сообщение на консоль. Функция main () вызывает функцию fn_hello () .
fn main(){ //calling a function fn_hello(); } //Defining a function fn fn_hello(){ println!("hello from function fn_hello "); }
Выход
hello from function fn_hello
Возвращаемое значение из функции
Функции могут также возвращать значение вместе с контролем обратно вызывающей стороне. Такие функции называются возвращающими функциями.
Синтаксис
Любой из следующего синтаксиса может использоваться для определения функции с типом возврата.
С возвратом
// Syntax1 function function_name() -> return_type { //statements return value; }
Сокращенный синтаксис без оператора возврата
//Syntax2 function function_name() -> return_type { value //no semicolon means this value is returned }
lllustration
fn main(){ println!("pi value is {}",get_pi()); } fn get_pi()->f64 { 22.0/7.0 }
Выход
pi value is 3.142857142857143
Функция с параметрами
Параметры — это механизм для передачи значений в функции. Параметры составляют часть сигнатуры функции. Значения параметров передаются функции во время ее вызова. Если явно не указано, количество значений, передаваемых функции, должно соответствовать количеству определенных параметров.
Параметры могут быть переданы в функцию одним из следующих способов:
Передать по значению
Когда метод вызывается, для каждого параметра значения создается новое место хранения. Значения фактических параметров копируются в них. Следовательно, изменения, внесенные в параметр внутри вызванного метода, не влияют на аргумент.
В следующем примере объявляется переменная no, которая изначально равна 5. Переменная передается как параметр (по значению) в функцию mutate_no_to_zero () , которая изменяет значение на ноль. После вызова функции, когда управление возвращается к основному методу, значение будет таким же.
fn main(){ let no:i32 = 5; mutate_no_to_zero(no); println!("The value of no is:{}",no); } fn mutate_no_to_zero(mut param_no: i32) { param_no = param_no*0; println!("param_no value is :{}",param_no); }
Выход
param_no value is :0 The value of no is:5
Передача по ссылке
Когда вы передаете параметры по ссылке, в отличие от значений параметров, для этих параметров не создается новое место хранения. Эталонные параметры представляют ту же область памяти, что и фактические параметры, которые передаются в метод. Значения параметров могут быть переданы по ссылке путем добавления префикса имени переменной к & .
В приведенном ниже примере у нас есть переменная no , которая изначально равна 5. Ссылка на переменную no передается функции mutate_no_to_zero () . Функция работает с исходной переменной. После вызова функции, когда управление возвращается обратно в метод main, значение исходной переменной будет равно нулю.
fn main() { let mut no:i32 = 5; mutate_no_to_zero(&mut no); println!("The value of no is:{}",no); } fn mutate_no_to_zero(param_no:&mut i32){ *param_no = 0; //de reference }
Оператор * используется для доступа к значению, хранящемуся в ячейке памяти, на которую указывает переменная param_no . Это также известно как разыменование.
Выход будет —
The value of no is 0.
Передача строки в функцию
Функция main () передает строковый объект в функцию display () .