Найти в Дзене
Muhammed Mustafaev

Rust. Функции. Коментарии. Выражения if-else.

Одно из главных частей rust. Мы функции встречаем всегда, точкой входа в программу является функция main. Функция объявляется с помощью ключевого слова fn. Примеры объявления функции:
fn main() {
hello();
}
fn hello() {
println!("hello");
}
Функцию можно вызвать где угодно. Rust не волнует где в каком месте определенна функция.
Функция состоит из ключевого слова fn имени скобок и фигурных скобок. Параметры функции
Функция может быть объявлена с параметрами, это специальные переменные. Пример
fn main() {
print(23);
}
fn print(n: i32) {
println!("{}", n);
}
То что мы передаем в функцию это называется аргументом, а то что мы принимаем это параметр. Мы должны указывать тип параметров.
Когда у функции множество параметров, то они разделяются запятой
fn print(n: i32, b: bool) {
println!("{}, {}", n, b);
}
Тело функции состоит из операторов и выражений
Тело функции состоит из операторов, и может закончится с выражением.
Операторы (Statements) - это инструкции, которые выполняю

Одно из главных частей rust. Мы функции встречаем всегда, точкой входа в программу является функция main. Функция объявляется с помощью ключевого слова fn. Примеры объявления функции:

fn main() {
hello();
}

fn hello() {
println!("hello");
}
Функцию можно вызвать где угодно. Rust не волнует где в каком месте определенна функция.
Функция состоит из ключевого слова fn имени скобок и фигурных скобок.

Параметры функции
Функция может быть объявлена с параметрами, это специальные переменные. Пример

fn main() {
print(23);
}

fn print(n: i32) {
println!("{}", n);
}
То что мы передаем в функцию это называется аргументом, а то что мы принимаем это параметр. Мы должны указывать тип параметров.
Когда у функции множество параметров, то они разделяются запятой
fn print(n: i32, b: bool) {
println!("{}, {}", n, b);
}

Тело функции состоит из операторов и выражений
Тело функции состоит из операторов, и может закончится с выражением.
Операторы (Statements) - это инструкции, которые выполняют действия, но не возвращают значение. Выражения (Expressions) вычисляются в результирующее значение, которое возвращается. Вызов макроса, функции является выражением блок используемый для создания областей видимости тоже является выражением
fn main () {
let x = 4;
let y = {
let x = 35;
x*2
};
println!("{}", y);
}

{ let x = 35; x*2 } это является выражением, которое возвращает число 70.
x*2 не имеет в конце точку с запятой, это означает что оно выражение. Если поместить точку запятой то оно станет оператором. Также если в конце функции или макроса поместить точку с запятой то они станут операторами. И не будут возвращать значение.

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

fn five() -> i32 {
5
}

fn main() {
let x = five();
println!("The value of x is: {}", x);
}
В этом примере после вызова функции five, функция возвращает 5, которая присваивается к x и далее выводится в консоль. Если мы в функции five после 5 поставим точку с запятой то функция ничего не вернет, из чего компилятор во время компиляции вызовет ошибку

Комментарии
Комментарии во время компиляции игнорируются компилятором, никак не влияют на выполнение программы. Они очень важны для объяснения куска кода другому программисту или нам же через некоторое время. Пример комментария:
println!("hello world"); // этот участок кода выводит "hello world" на консоль.

Выражения if-else
Выражение if позволяет разделять вашу программу на ветви. Программа будет выполнятся в зависимости от условий в выражении if.
Выражение в if выполняется только если условие истина, иначе выполнится выражение в else
Примеры
let i = 9;
if i < 13 {
println!("Истинна")
}
else {
println!("Лож")
}
В условии выражения if компилятор ждет встретить тип bool, если там было бы числовой тип, то rust вывел бы ошибку. Вы может быть видели в других языках программирования C++, Python, что в этих языках автоматически конвертирует разные типы в логический тип, а rust не пытается так сделать.
Также есть выражение else if, которую пишут после выражения if, если выражение в if не выполнится то компилятор проверит условие в else if. Выражение if else можно писать столько сколько вам нужно.
let i = 9;
if i == 13 { println!("равны") }
else if i > 13 {println!("Больше")}
else { println!("Меньше") }

Использование if в let операторах
let condition = true;
let number = if condition { 5 } else { 6 };
Если условие истинна то number будет равна 5 иначе 6.