3. Разбираемся с макросом print!
К этому моменту на вашем компьютере уже должен быть установлен Rust и настроена среда разработки. Не доверяйте приведенным здесь текстам примеров, запускайте их у себя на компьютере. Не ленитесь, вводите каждый пример вручную. Так вы отработаете навык печати и запомните синтаксис.
Перенос строки
В самом начале мы изучили макрос
fn main() {
print!("Первая строка");
println!("Вторая строка");
println!("Третья строка");
}
Здесь третья строка перенеслась потому, что для второй использовался макрос
Чтобы всё выводилось с новой строки, следует заменить
fn main() {
print!("Первая строка");
print!("\n");
println!("Вторая строка");
println!("Третья строка");
}
Вывод чисел и выражений
Помимо текста, с помощью макроса
fn main() {
print!("Сумма 3 + 5 = {}", 8);
}
Аналогичный результат мы получим вычисляя выражение непосредственно в макросе.
fn main() {
print!("Сумма 3 + 5 = {}", 3 + 5);
}
В данном примере мы использовали плейсхолдер-заполнитель
Несколько заполнителей
В одном макросе вы можете использовать несколько плейсхолдеров. Просто ставите скобки там где нужно в тексте, а за кавычками, через запятую, последовательно указываете эти значения.
fn main() {
println!("Не приложишь {}, не появится {}.", "труд", "пруд");
}
Позиционные аргументы
А что, если нужно несколько раз использовать одно слово? Давайте рассмотрим пример:
fn main() {
println!("Не стыдно не {0} стыдно не {1}. Давайте {1}. ", "знать", "учиться");
}
В этом случае макрос нумерует ваши значения и подставляет в заполнитель в соответствии с порядковым номером, начиная с нуля.
Преимущества позиционных аргументов:
- Список значений можно расположить в любом порядке.
- Значение можно ввести один раз и использовать в выводе несколько раз.
Именованные аргументы
Можно пойти ещё дальше, не нумеровать аргументы, а дать им осмысленные названия. В этом случае порядок аргументов уже не будет иметь значения.
fn main() {
println!("Студент {name} сдал экзамен на {grade}.", grade = 5, name = "Вася");
}
Здесь заполнитель принимает значение именованного аргумента, что может быть очень удобно для понимания что и куда подставиться в вашей программе, особенно, если текст будет длиннее и аргументов больше.
Использование переменных в скобках
Можно помещать имя переменной непосредственно в фигурные скобки. Но так имеет смысл делать только для самых простых случаев, т.к. этим вы ограничиваете возможности форматирования вывода.
fn main() {
let n = 3 + 5;
print!("Сумма 3 + 5 = {n}");
}
Эта информация для общего развития. Переменные мы рассмотрим в следующих уроках.
Макрос format!()
Макрос формат имеет все те же возможности, что и
Например:
fn main(){
let st: String;
st = format!("Три и пять равно {}", 3+5);
println!("{}", st);
}
Результатом этого кода будет связывание с переменной
Форматирование вывода
В этот материал можно глубоко не погружаться, он только для ознакомления, чтобы вы знали потом где искать информацию.
Плейсхолдер для отладки программы
В будущем, в учебных примерах, вам понадобится выводить некоторые сложные типы данных, такие как векторы или массивы, которые не имеют четкого пользовательского представления. Для их вывода можно использовать плейсхолдер-заполнитель
println!("{:?}", vec!["a","b", "c"]);
Также есть такой плейсхолдер-заполнитель
println!("{:#?}", vec![Some("Hello"), None, Some("World")]);
Попробуйте увидеть результат выполнения этого кода в своей среде разработки.
Плейсхолдер для конвертации чисел
Если есть необходимость преобразовать значение в двоичное, шестнадцатеричное или восьмеричное, используйте соответственно:
Как ещё можно форматировать вывод
При выводе можно, например, округлить число. В данном примере до двух знаков после запятой:
fn main() {
print!("{:.2}", 3.14159265);
}
Попробуйте изменить параметры вывода и посмотреть как изменится результат.
Больше возможностей по данной теме вы найдете в документации по языку Rust: https://doc.rust-lang.org/std/fmt/. Не пугайтесь, со временем вы научитесь во всём этом разбираться.
Для просмотра заданий и решений, а также публикации своих решений необходимо зарегистрироваться на сайте.
Всё бесплатно, мы просто хотим с вами познакомиться и понять насколько актуально то, что мы делаем.