網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
函數(shù)
今天學(xué)習(xí)的內(nèi)容是 Rust 中的函數(shù)。
函數(shù),和 if 條件控制,while、loop、for 循環(huán)控制,在底層都是使用跳轉(zhuǎn)實(shí)現(xiàn)的,所以函數(shù)也屬于流程控制的一種。可以這樣理解,當(dāng)函數(shù)執(zhí)行時(shí),程序的執(zhí)行主體就進(jìn)入了函數(shù)內(nèi)部,當(dāng)函數(shù)執(zhí)行完畢,則又返還回去,這就是函數(shù)的流程控制。
Rust 中使用函數(shù)和 Typescript 比較像,需要關(guān)注參數(shù)的類型和返回值的類型, 再就是有一點(diǎn) Rust 語(yǔ)言的特性,返回值可以是一個(gè)表達(dá)式。
參數(shù)的類型注解和變量是一樣的,在參數(shù)名為使用冒號(hào) :
指定類型,返回值的類型使用箭頭 ->
表示。如果函數(shù)沒(méi)有返回值,則可以省略。
斐波那契數(shù)列函數(shù)
比如一個(gè)斐波那契數(shù)列函數(shù):
fn fibonacci(n: u64) -> u64 { if n < 2 { return n; } return fibonacci(n - 1) + fibonacci(n - 2); } fn main() { println!("斐波那契數(shù)列的第 10 項(xiàng)是:{:?}", fibonacci(10)); // 55 }
前面說(shuō)過(guò),Rust 是基于表達(dá)式的,函數(shù)中也能用到這個(gè)特性。一般函數(shù)都會(huì)使用 return
來(lái)結(jié)束函數(shù)的調(diào)用和返回值。
Rust 中的函數(shù),如果沒(méi)有 return,默認(rèn)會(huì)將最后一個(gè)表達(dá)式的值作為函數(shù)的返回值,所以上面的斐波那契數(shù)列函數(shù)可以寫成:
fn fibonacci(n: u64) -> u64 { if n < 2 { n } else { fibonacci(n - 1) + fibonacci(n - 2) } }
函數(shù)沒(méi)有返回值時(shí),可以省略返回值的類型,或者寫成 ()
:
fn log1(message: &str) { println!("{}", message); } fn log2(message: &str) -> () { println!("{}", message); } fn main() { let message = "測(cè)試"; log1(message); log2(message); }
小結(jié)
本文介紹了 Rust 中的函數(shù)類型,從程序執(zhí)行的角度看,它也屬于流程控制的一種。但更多時(shí)候我們只把函數(shù)看作是對(duì)一個(gè)功能的封裝。Rust 具備函數(shù)式編程的特性,所以函數(shù)是 Rust 中的重中之重。
原文鏈接:https://juejin.cn/post/7156822932017610759
相關(guān)推薦
- 2022-03-16 Quartz.Net使用方法詳解_C#教程
- 2022-10-03 如何在python中實(shí)現(xiàn)capl語(yǔ)言里的回調(diào)函數(shù)(推薦)_python
- 2022-08-10 Python多任務(wù)版靜態(tài)Web服務(wù)器實(shí)現(xiàn)示例_python
- 2022-07-18 C語(yǔ)言簡(jiǎn)明講解歸并排序的應(yīng)用_C 語(yǔ)言
- 2023-01-07 python導(dǎo)入其他目錄下模塊的四種情況_python
- 2023-08-13 基于TP5框架的excel導(dǎo)入功能
- 2022-07-19 Nacos注冊(cè)中心配置用法解析
- 2022-11-22 Redis?BloomFilter布隆過(guò)濾器原理與實(shí)現(xiàn)_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支