ввод, вывод
Как и в C++, есть стандартный ввод и вывод:
use std::io::stdin;
fn main() {
println!("你好,你叫什么名字?");
let mut your_name = String::new();
stdin()
.read_line(&mut your_name)
.expect("Failed to read line");
println!("你好,{}", your_name)
}
Если у вас есть опыт разработки или вы что-то знаете о C++, вы не сможете понять этот код.Одним предложением: используйте стандартныйstd::io::stdin
Ввод метода такой, а затем содержимое сохраняется в переменнойyour_name
вводить, читать и добавлять сообщение об исключении в концеexpect
.
По поводу написания этой цепочки, поясняется в статье:
Подобное объединение функций называется цепочкой функций. Начиная сверху, каждая функция передает свои результаты следующей функции. Обычно цепочку функций форматируют так, чтобы каждый шаг в ее строке имел отступ, чтобы указать, что блок принадлежит друг другу.
function
Оберните приведенный выше код в функцию:
use std::io::stdin;
fn what_is_your_name() -> String {
let mut your_name = String::new();
stdin()
.read_line(&mut your_name)
.expect("Failed to read line");
your_name
}
fn main() {
println!("你好,你叫什么名字?");
let name = what_is_your_name();
println!("你好,{}", name);
}
Среди них особое отличие состоит в том, что возврат в функцию можно записать напрямуюyour_name
, опущеноreturn
и точка с запятой, это интересно.
Эта строка не заканчивается точкой с запятой. Это сокращение для возврата в Rust. Таким образом может возвращаться любое выражение. Это то же самое, что и при вводе return your_name;. Clippy будет жаловаться, если вы наберете return, когда он вам не нужен.
Array
Существует два правила определения массива:
- Тип данных непротиворечив;
- Длина массива не меняется
Методы и формы определения массивов и вспомогательных массивов аналогичны другим языкам и не нуждаются в объяснении, например:
let visitor_list = ["叶梅树", "叶帅", "叶哥"];
println!("第一种遍历方法");
for i in 0..visitor_list.len() {
println!("{}", visitor_list[i]);
}
println!("第二种遍历方法");
for visitor in &visitor_list {
println!("{}", visitor);
}
Structs
разговорный язык: структура
Среди них вышеперечисленные мы использовалиString
а такжеStdIn
Оба являются структурными типами.
Мы можем определить структуру, а затем наследовать эту структуру и написать соответствующий метод структуры, что чем-то похоже на способ написания Swift.
Например, мы определяемVisitor
Структура:
// 定义一个结构体
struct Visitor {
name: String,
greeting: String,
}
// 编写继承函数
impl Visitor {
fn new(name: &str, greeting: &str) -> Self {
Self {
name: name.to_lowercase(),
greeting: greeting.to_string(),
}
}
fn greet_visitor(&self) {
println!("{}", self.greeting);
}
}
использовать:
use std::io::stdin;
fn what_is_your_name() -> String {
let mut your_name = String::new();
stdin()
.read_line(&mut your_name)
.expect("Failed to read line");
your_name
}
// 定义一个结构体
struct Visitor {
name: String,
greeting: String,
}
// 编写继承函数
impl Visitor {
fn new(name: &str, greeting: &str) -> Self {
Self {
name: name.to_string(),
greeting: greeting.to_string(),
}
}
fn greet_visitor(&self) {
println!("{}", self.greeting);
}
}
fn main() {
let visitor_list = [
Visitor::new("bert", "Hello Bert, enjoy your treehouse."),
Visitor::new("steve", "Hi Steve. Your milk is in the fridge."),
Visitor::new("fred", "Wow, who invited Fred?"),
];
println!("你好,你叫什么名字?");
let name = what_is_your_name();
let known_visitor = visitor_list
.iter()
.find(|visitor| visitor.name == name);
match known_visitor {
Some(visitor) => visitor.greet_visitor(),
None => println!("不在列表之内")
}
}
Vectors
По сравнению с массивами, размеры векторов можно динамически изменять, используяpush
Метод увеличивает элементы до тех пор, пока не будет достигнут предел системной памяти, или увеличивает до бесконечности.
Другие методы использования аналогичны и не будут здесь описываться.
Enumerations
Это использование аналогично, нет никакой разницы, и метод использования будет описан в процессе будущего использования.
enum VisitorAction {
Accept,
AcceptWithNote { note: String },
Refuse,
Probation,
}
здесь,AcceptWithNodte { note: String }
Когда вы используете его, вы можете настроить использование переменных.
Во второй главе ядро в основном такое же.В третьей главе мы можем войти в стадию игры.Мы можем использовать вышеуказанные базовые знания, чтобы проверить конкретный метод использования в Интернете.