Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_rust
提交
9608d4cb
S
skill_tree_rust
项目概览
CSDN 技术社区
/
skill_tree_rust
通知
32
Star
7
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
9608d4cb
编写于
12月 08, 2021
作者:
jackymao.com
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add match excercise
上级
197a9c7d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
118 addition
and
1 deletion
+118
-1
data/1.rust初阶/2.rust基本概念/9.表达式/config.json
data/1.rust初阶/2.rust基本概念/9.表达式/config.json
+4
-1
data/1.rust初阶/2.rust基本概念/9.表达式/match.json
data/1.rust初阶/2.rust基本概念/9.表达式/match.json
+7
-0
data/1.rust初阶/2.rust基本概念/9.表达式/match.md
data/1.rust初阶/2.rust基本概念/9.表达式/match.md
+107
-0
未找到文件。
data/1.rust初阶/2.rust基本概念/9.表达式/config.json
浏览文件 @
9608d4cb
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"rust-73665fa29a214d2bb55ead28656063cb"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[
"match.json"
]
}
\ No newline at end of file
data/1.rust初阶/2.rust基本概念/9.表达式/match.json
0 → 100644
浏览文件 @
9608d4cb
{
"type"
:
"code_options"
,
"author"
:
"jacky_rust"
,
"source"
:
"match.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/1.rust初阶/2.rust基本概念/9.表达式/match.md
0 → 100644
浏览文件 @
9608d4cb
# match 表达式
Rust 的 match 表达式类似 C 语言的 switch 语句,但比之更强大。
```
rust
fn
main
()
{
let
x
=
42
;
match
x
{
0
=>
{
println!
(
"zero"
);
}
1
=>
{
println!
(
"one"
);
}
2
=>
{
println!
(
"two"
);
}
3
..=
41
=>
{
println!
(
"between 3 and 41 (ends included)"
);
}
42
=>
{
println!
(
"The answer"
);
}
n
@
43
..=
99
=>
{
println!
(
"Hint: the answer is smaller than {}"
,
n
);
}
_
=>
{
println!
(
"out of the range"
);
}
}
}
```
match 还可以直接使用多值模式匹配
```
rust
fn
main
()
{
let
p
=
(
2
,
4
);
match
p
{
(
0
,
0
)
=>
{
println!
(
"Bingo! Origin of coordinates."
);
}
(
0
,
_
y
)
=>
{
println!
(
"On the X axis."
);
}
(
_
x
,
0
)
=>
{
println!
(
"On the Y axis."
);
}
_
=>
{
println!
(
"Not on the axises"
);
}
}
}
```
match 还可以将返回值作为右值给变量赋值。另外要注意 match 的每个分支返回的数据类型要相同。
下列选项中,能正确打印一个不在 X 或 Y 轴上的点的 x, y 坐标的是:
## 答案
```
rust
fn
main
()
{
let
p
=
(
2
,
4
);
let
result
=
match
p
{
(
0
,
0
)
=>
{
(
0
,
0
)
}
(
0
,
_
y
)
=>
{
(
0
,
0
)
}
(
_
x
,
0
)
=>
{
(
0
,
0
)
}
(
x
,
y
)
=>
{
(
x
,
y
)
}
};
println!
(
"x: {}, y: {}"
,
result
.0
,
result
.1
);
}
```
## 选项
### let 赋值语句不要忘记分号
```
rust
fn
main
()
{
let
p
=
(
2
,
4
);
let
result
=
match
p
{
(
0
,
0
)
=>
{
(
0
,
0
)
}
(
0
,
_
y
)
=>
{
(
0
,
0
)
}
(
_
x
,
0
)
=>
{
(
0
,
0
)
}
(
x
,
y
)
=>
{
(
x
,
y
)
}
}
println!
(
"x: {}, y: {}"
,
result
.0
,
result
.1
);
}
```
### match 分支要返回同类似的值
```
rust
fn
main
()
{
let
p
=
(
2
,
4
);
let
result
=
match
p
{
(
0
,
0
)
=>
{
println!
(
"Bingo! Origin of coordinates."
);
}
(
0
,
_
y
)
=>
{
println!
(
"On the X axis."
);
}
(
_
x
,
0
)
=>
{
println!
(
"On the Y axis."
);
}
(
x
,
y
)
=>
{
(
x
,
y
)
}
};
println!
(
"x: {}, y: {}"
,
x
,
y
);
}
```
### match 分支要用逗号分隔,或用花括号包括语句以自动返回 () 值
```
rust
fn
main
()
{
let
p
=
(
2
,
4
);
match
p
{
(
0
,
0
)
=>
println!
(
"Bingo! Origin of coordinates."
);
(
0
,
_
y
)
=>
println!
(
"On the X axis."
);
(
_
x
,
0
)
=>
println!
(
"On the Y axis."
);
(
x
,
y
)
=>
println!
(
"x: {}, y: {}"
,
x
,
y
);
}
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录