Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_rust
提交
34e303f1
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看板
提交
34e303f1
编写于
8月 19, 2022
作者:
J
jackymao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add function_parameters
上级
6b02802b
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
100 addition
and
1 deletion
+100
-1
data/1.rust初阶/2.rust基本概念/6.函数参数/config.json
data/1.rust初阶/2.rust基本概念/6.函数参数/config.json
+4
-1
data/1.rust初阶/2.rust基本概念/6.函数参数/function_parameters.json
data/1.rust初阶/2.rust基本概念/6.函数参数/function_parameters.json
+8
-0
data/1.rust初阶/2.rust基本概念/6.函数参数/function_parameters.md
data/1.rust初阶/2.rust基本概念/6.函数参数/function_parameters.md
+88
-0
未找到文件。
data/1.rust初阶/2.rust基本概念/6.函数参数/config.json
浏览文件 @
34e303f1
...
...
@@ -2,7 +2,9 @@
"node_id"
:
"rust-2d5b0ce68c464757b1178481aafbcc7f"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[],
"export"
:
[
"function_parameters.json"
],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.rust初阶/2.rust基本概念/6.函数参数/function_parameters.json
0 → 100644
浏览文件 @
34e303f1
{
"type"
:
"code_options"
,
"author"
:
"jackymao_com"
,
"source"
:
"function_parameters.md"
,
"notebook_enable"
:
false
,
"exercise_id"
:
""
}
\ No newline at end of file
data/1.rust初阶/2.rust基本概念/6.函数参数/function_parameters.md
0 → 100644
浏览文件 @
34e303f1
# 函数参数
函数名后面的小括号内放置参数,参数后面需要加冒号再加类型,一般函数的参数的数量是固定的。闭包的参数的两个竖线中间。宏看起来像函数,但在名称后面有感叹号,后面括号里面的参数数量可以不是固定的。
参数的类型可以是具体类型,也可以是泛型,还可以是 impl Trait 的形式。
在结构体的 impl 内部,如果定义的函数参数不包含 self (如 self, &self, &mut self),就是静态方法,需要使用 StructName::method 调用,如 String::from(), 如果有包含 self 为参数的函数,就是实例方法。 如 "Hello".to_string() 。
带有泛型和生命周期的函数参数相对复杂,但只要多看,熟悉了就好了。看得多了,很多时候只需浏览一个函数的签名,就可以知道该函数大部分的行为。譬如如下函数签名:
```
rust
// add 函数,left hand side 参数类型 i32, righ hand side 参数类型 i32, 返回 i32 类型
fn
add
(
lhs
:
i32
,
rhs
:
i32
)
->
i32
{}
```
```
rust
fn
play_with
(
dog_name
:
String
,
game_name
:
String
)
{}
```
```
rust
struct
Dog
;
struct
Game
;
fn
play_with
(
dog
:
Dog
,
game
:
Game
);
```
```
rust
fn
foo
<
T
>
(
input
:
&
mut
T
,
val
:
T
)
{}
```
```
rust
fn
do_stuff
<
T
:
Clone
>
(
value
:
&
T
)
{}
// 上面这行等效于
fn
do_stuff
(
value
:
&
T
)
where
T
:
Clone
{}
```
其它:
```
rust
fn
print
<
'a
>
(
s
:
&
'a
str
);
fn
get_str
()
->
&
str
;
fn
args
<
'a
,
'b
,
T
:
ToCStr
>
(
&
'a
mut
self
,
args
:
&
'b
[
T
])
->
&
'a
mut
Command
fn
new
(
calculation
:
T
)
->
Cacher
<
T
>
where
T
:
Fn
(
u32
)
->
u32
,
{}
fn
tokenize
<
'a
>
(
code
:
&
'a
str
)
->
impl
Iterator
<
Item
=&
'a
str
>
{}
async
fn
main
()
->
Result
<
(),
std
::
io
::
Error
>
{}
```
如下函数签名解读错误的是:
```
rust
async
fn
handle_request
(
request
:
HttpRequest
)
->
HttpResponse
{}
```
## 答案
它有两个参数
## 选项
###
从 async 看出这是一个异步函数
###
函数名是 handle_request
###
参数名是 request, 参数类型是 HttpRequest
###
返回类型是 HttpResponse
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录