【Rust練習】1.變量綁定與解構

地址:https://practice-zh.course.rs/variables.html

🌟 變量只有在初始化后才能被使用

// 修復下面代碼的錯誤并盡可能少的修改
fn main() {let x: i32; // 未初始化,但被使用let y: i32; // 未初始化,也未被使用println!("x is equal to {}", x); 
}

x初始化即可。

// 修復下面代碼的錯誤并盡可能少的修改
fn main() {let x: i32 = 1; // 未初始化,但被使用let y: i32; // 未初始化,也未被使用println!("x is equal to {}", x); 
}

🌟🌟 可以使用 mut 將變量標記為可變

// 完形填空,讓代碼編譯
fn main() {let __ = 1;__ += 2; println!("x = {}", x); 
}

聲明mut x即可

// 完形填空,讓代碼編譯
fn main() {let mut x = 1;x += 2; println!("x = {}", x); 
}

🌟 作用域是一個變量在程序中能夠保持合法的范圍

// 修復下面代碼的錯誤并使用盡可能少的改變
fn main() {let x: i32 = 10;{let y: i32 = 5;println!("x 的值是 {}, y 的值是 {}", x, y);}println!("x 的值是 {}, y 的值是 {}", x, y); 
}

y的作用域僅限大括號內部(對C++程序員可太熟悉了),所以去掉即可。

// 修復下面代碼的錯誤并使用盡可能少的改變
fn main() {let x: i32 = 10;{let y: i32 = 5;println!("x 的值是 {}, y 的值是 {}", x, y);}println!("x 的值是 {}", x); 
}

🌟🌟 若后面的變量聲明的名稱和之前的變量相同,則我們說:第一個變量被第二個同名變量遮蔽了( shadowing )

// 只允許修改 `assert_eq!` 來讓 `println!` 工作(在終端輸出 `42`)
fn main() {let x: i32 = 5;{let x = 12;assert_eq!(x, 5);}assert_eq!(x, 12);let x = 42;println!("{}", x); // 輸出 "42".
}

本作用域內的值遮蓋了外部的變量:

// 只允許修改 `assert_eq!` 來讓 `println!` 工作(在終端輸出 `42`)
fn main() {let x: i32 = 5;{let x = 12;assert_eq!(x, 12);}assert_eq!(x, 5);let x = 42;println!("{}", x); // 輸出 "42".
}

🌟🌟 修改一行代碼以通過編譯

fn main() {let mut x: i32 = 1;x = 7;// 遮蔽且再次綁定let x = x; x += 3;let y = 4;// 遮蔽let y = "I can also be bound to text!"; 
}

再次聲明的x和之前不是一個東西,所以要重新mut

fn main() {let mut x: i32 = 1;x = 7;// 遮蔽且再次綁定let mut x = x; x += 3;let y = 4;// 遮蔽let y = "I can also be bound to text!"; 
}

使用以下方法來修復編譯器輸出的 warning :

🌟 一種方法
🌟🌟 兩種方法

fn main() {let x = 1; 
}

第一種就是改為_x,第二種就是隨便使用下x(比如輸出)

🌟🌟 我們可以將 let 跟一個模式一起使用來解構一個元組,最終將它解構為多個獨立的變量

// 修復下面代碼的錯誤并盡可能少的修改
fn main() {let (x, y) = (1, 2);x += 2;assert_eq!(x, 3);assert_eq!(y, 2);
}

在元組里再聲明mut即可

// 修復下面代碼的錯誤并盡可能少的修改
fn main() {let (mut x, y) = (1, 2);x += 2;assert_eq!(x, 3);assert_eq!(y, 2);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42091.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WIN32核心編程 - 線程操作(一) 線程信息 - 線程控制

公開視頻 -> 鏈接點擊跳轉公開課程博客首頁 -> 鏈接點擊跳轉博客主頁 目錄 Thread Thread Control 創建 - Create 執行 - Execute 掛起 - Suspend 恢復 - Resume 終止 - Terminate 遠程 - Remote Thread Info GetCurrentThread/Id GetThreadContext CreateToo…

Vue iview-ui 被tooltip包裹的標題,點擊跳轉后,提示框不消失

tooltip包裹的標題,點擊跳轉后,提示框不消失 就會有這種顯示問題 下面這種錯誤方法不可行,解決辦法往下翻 css寫得沒錯,問題出在Javascript當中的 getElementsByClassName(“xxabc”), 這個方法得到的是一個由class&q…

【Android】【WIFI】檢查 SDIO 設備的狀態

檢查 SDIO 設備的狀態 要檢查 Android 設備上 SDIO 設備的狀態,可以使用 ADB 命令來獲取系統信息。以下是一些示例命令: 列出 SDIO 設備 adb shell cat /proc/devices | grep sdio檢查 SDIO 模塊是否加載 adb shell lsmod | grep sdio獲取 SDIO 相關的…

IDEA中使用Maven打包及碰到的問題

1. 項目打包 IDEA中,maven打包的方式有兩種,分別是 install 和 package ,他們的區別如下: install 方式 install 打包時做了兩件事,① 將項目打包成 jar 或者 war,打包結果存放在項目的 target 目錄下。…

自閉癥在生活中的典型表現

自閉癥,這個看似遙遠卻又悄然存在于我們周圍的疾病,其影響深遠且復雜。在日常生活中,自閉癥患者的典型表現往往讓人印象深刻,這些表現不僅揭示了他們內心的世界,也提醒我們要以更加包容和理解的心態去面對他們。 首先…

R語言4.3.0保姆級安裝教程,包含安裝包

[軟件名稱]:R語言4.3.0 R是用于統計分析、繪圖的語言和操作環境。R是屬于GNU系統的一個自由、免費、源代碼開放的軟件,它是一個用于統計計算和統計制圖的優秀工具。 獲取鏈接: https://pan.quark.cn/s/180306f47179 安裝步驟: 1.解壓壓縮包。 2.進入…

EtherCAT轉Profinet網關配置說明第二講:上位機軟件配置

EtherCAT協議轉Profinet協議網關模塊(XD-ECPNS20),不僅可以實現數據之間的通信,還可以實現不同系統之間的數據共享。EtherCAT協議轉Profinet協議網關模塊(XD-ECPNS20)具有高速傳輸的特點,因此通…

iOS開發語言基礎與Xcode工具初探

在iOS開發的世界里,Swift語言和Xcode開發工具是每個開發者旅程的起點。Swift,一種由Apple設計的編程語言,以其簡潔的語法和強大的性能,成為了iOS開發的首選語言。而Xcode,則是Apple官方提供的集成開發環境(…

Spring的核心概念理解案列

IDEA開發的簡單“登陸成功”小項目 IDEA項目結構: 每一部分代碼和相應的解讀: com.itTony文件下有dao(實體)層,service(服務)層,編寫的2個類(HelloSpring和TestSpring&…

docker容器相關命令1(小記)

docker run 只在第一次運行時使用,將鏡像放到容器中,以后再次啟動這個容器時,只需要使用命令docker start即可。 docker run -it … /bin/bash :表示創建并啟動容器直接進入容器的命令行,命令行中exit就是退出容器&…

運維鍋總詳解CPU

本文從CPU簡介、衡量CPU性能指標、單核及多核CPU工作流程、如何平衡 CPU 性能和防止CPU過載、為什么計算密集型任務要選擇高頻率CPU、超線程技術、CPU歷史演進及摩爾定律等方面對CPU進行詳細分析。希望對您有所幫助! 一、CPU簡介 CPU(中央處理器&#…

要想貴人相助,首先自己得先成為貴人!

點擊上方△騰陽 關注 轉載請聯系授權 在金庸江湖里,有兩位大俠,一個是蕭峰,一個是郭靖。 郭靖在《射雕英雄傳》里是絕對的主角,在《神雕俠侶》當中也是重要的配角,甚至可以說是第二主角。 談起郭靖,很多…

昇思MindSpore學習入門-評價指標

當訓練任務結束,常常需要評價函數(Metrics)來評估模型的好壞。不同的訓練任務往往需要不同的Metrics函數。例如,對于二分類問題,常用的評價指標有precision(準確率)、recall(召回率&…

20240706 每日AI必讀資訊

🚀Meta 發布 AI 重磅炸彈:多標記預測模型現已開放研究 - 新技術采用多標記預測方法,有望提高性能并縮短訓練時間。 - 模型同時預測多個未來單詞,可能改善語言結構和上下文理解。 - multi-token prediction模型是Facebook基于大…

策略為王股票軟件源代碼-----如何修改為自己軟件73------------主界面右下角,大盤指數,時間顯示 ,

IDS_MAINFRAME_SHINDEXTIP "滬:%2.f %+.2f %.2f億" IDS_MAINFRAME_SZINDEXTIP "深:%2.f %+.2f %.2f億" 主界面右下角,大盤指數,時間顯示 , if( TIMER_TIME == nIDEvent ) { CSPTime time = CSPTime::GetCurrentTime(); …

GET方法與POST方法的區別

GET方法與POST方法是HTTP協議中常用的兩種請求方法,主要區別如下: GET方法 1. 數據傳輸位置:GET請求的數據通過URL傳遞,數據被附加在URL的末尾,以鍵值對的形式出現。 2. 數據長度限制:由于URL的長度限制&am…

AI網絡爬蟲001:用kimichat自動批量提取網頁內容

文章目錄 一、準備工作二、輸入內容三、輸出內容一、準備工作 在網頁中按下F12鍵,查看定位網頁元素 二、輸入內容 在kimi中輸入提示詞: 你是一個Python編程專家,要完成一個爬取網頁內容的Python腳本,具體步驟如下:在F盤新建一個Excel文件:提示詞.xlsx打開網頁:https:…

AI實踐與學習7_AI解場景Agent應用預研demo

前言 學習大模型Agent相關知識,使用llama_index實現python版的Agent demo,根據AI解題場景知識密集型任務特點,需要實現一個偏RAG的Agent WorkFlow,輔助AI解題。 使用Java結合Langchain4j支持的RAG流程一些優化點以及自定義圖結構…

Redis基礎教程(九):redis有序集合

💝💝💝首先,歡迎各位來到我的博客,很高興能夠在這里和您見面!希望您在這里不僅可以有所收獲,同時也能感受到一份輕松歡樂的氛圍,祝你生活愉快! 💝&#x1f49…

【踩坑】解決undetected-chromedriver報錯cannot connect to-chrome

轉載請注明出處:小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你,歡迎[點贊、收藏、關注]哦~ 更新: 發現一個非常好用的項目,直接內置uc: GitHub - seleniumbase/SeleniumBase: 📊 Pythons all-in…