Rust - 流程控制、函数
概述
这篇是学习Rust的第二篇博客,在所有的编程语言里都离不开流程控制的模块,流程控制的模块包括条件语句和循环两部分。
if else
Rust的if的布尔条件不用括号括起来。if所有分支返回的类型必须相同。
fn main() {
let number = 3;
if number < 5 {
println!("条件为 true");
} else {
println!("条件为 false");
}
}
loop、while
Rust提供了loop一个关键字来表示无限循环。while是根据条件进行循环。
fn main() {
let s = ['R', 'U', 'N', 'O', 'O', 'B'];
let mut i = 0;
loop {
let ch = s[i];
if ch == 'O' {
break;
}
println!("\'{}\'", ch);
i = 1;
}
}
for range
Rust的 for in 语法可以用来遍历一个迭代器,有多种方法可以创建一个迭代器,最简单也是最常见的方式:
- a…b:这里将创建一个a,但不包含b的,步长为1的迭代器
- a…=b:这里将创建一个a,且包含b的,步长为1的迭代器
fn main() {
for i in 0..5 {
println!("i value is {}",i);
}
println!("-------------");
for i in 0..=5 {
println!("i value is {}",i);
}
}
for in 语法第二个重要的使用场景是遍历数组,但这首先将数组转化为一个迭代器,可以通过.iter()
或者.iter_mut
实现,区别是在于后者是可变的。
fn main() {
let mut myarray = [1,2,3];
for i in myarray.iter(){
println!("i value is {} ",i);
}
for i in myarray.iter_mut() {
*i *= 2;
}
for i in myarray.iter(){
println!("i value is {} ",i);
}
}
遍历关联数组:
fn main() {
let myarray = ["a","b","c"];
for i in myarray.iter(){
println!("i value is {} ",i);
}
}
match / if_let / while_let
在Rust 中 没有 switch 语句,matcher 就是 switch 的一个变形,但比其他语言中的 switch 更强大!
let x = 5;
match x {
1 => println!("one"),
2 => println!("two"),
3 => println!("three"),
4 => println!("four"),
5 => println!("five"),
_ => println!("something else"),
}
函数与方法
函数
函数定义以fn
为关键字,它的参数是带类型注释的,就像变量一样,如果函数返回值,则必须在箭头->
之后指定返回类型。
fn sum_number(n:u64) -> u64 {
if n < 2 {
n
}else{
n 1
}
}
fn main() {
println!("sumNumber is {}",sum_number(10))
}
函数与闭包
Rust的闭包是一种匿名函数,它可以从它的上下文中捕获变量的值,闭包使用 ||-> 语法定义,闭包可以保存在变量中。
fn main() {
let time3 = |n:u32| -> u32 { n * 3 };
println!("time3 is {}",time3(10));
}
move
关键字可以从闭包环境中捕获值,它最常用的场景是将主线程中的一个变量传递到了子线程中。
use std::thread;
fn main() {
let hi = "hi,stark";
thread::spawn(move || {
println!("stark value {}",hi);
}).join();
}
高阶函数 / 发散函数
在数学和计算机科学里,高阶函数至少满足一个条件的函数:
- 接收一个或多个函数作为输入
- 输出一个函数
在数学中它们叫做算子或泛函,高阶函数是函数式编程中一个重要概念。
fn action(method:fn(u32,u32)->u32,a: u32,b: u32) -> u32 {
method(a,b);
}
fn add(a:u32,b:u32) -> u32 {
a b
}
fn sub(a:u32,b:u32) -> u32 {
a - b
}
fn main() {
println!("{}",action(add,10,20))
}
发散函数
发散函数指的是永远不会被返回,它们的返回值标记!
,这是一个空类型。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgkjgfc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13