Rust Shadowing VS 可變變數

閱讀時間約 2 分鐘

先須知識:

  • 了解什麼是變數
  • 作用域scope

在Rust中,變數預設是不可變的

let name = "Zoe"; // 預設變數不可變

也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字:

let mut name = "Vicky";
name = "Alicia";

看似rust的mut variable和javascript的let宣告的variable相同,但其實還有個不同之處:

rust變數不可改變型別,不可變的變數不可改,可變的變數也不可改
let mut space = "     "
space = space.len();

會出現錯誤:error[E0308]: mismatched types

Shadowing 遮蔽

let name = "Vicky"
let name = "Alicia"

在Rust中想要改變一個變數的型別,必須藉由重新宣告的方式做到。在同名變數且相同scope中,新同名變數會被使用而忽略舊同名變數值的這種機制就稱為shadow,意味著前一個變數被後一個變數給遮蔽了,新的變數佔據了前面同名變數的使用權,直到他們也被更新的同名變數遮蔽或離開scope。

let mut number = "10";
let number = number.parse();
println!(number) // 10 數字

跟js比較

javascript變數介紹

javascript變數介紹

可以看到JS是不允許在同個scope中重複宣告同名變數,而Rust則允許,在Rust的使用情境多半是用在想要改變某個變數的型別時,這樣的特性能讓我們不用重複宣告類同名變數。

舉個例子而言,你的程式碼想把物件轉成陣列的形式,你無需新增各something_object跟something_array變數,只需要用一個something變數即可。


4會員
10內容數
分享感情與生活的故事,期望我們都能在愛與被愛的路上感到幸福,並且在這個只有活一次的人生裡好好的活成自己喜歡的樣子
留言0
查看全部
發表第一個留言支持創作者!
JHIHLEI LIN的沙龍 的其他內容
When you want to use your non-publish yet package in your other project, you need to do these: step 1 go to package and run : npm link packageNameHe
Magnetic tapes是一個自古就有的技術,至今還是有企業在使用,也有不斷在被改良中。 其特性:容量大低成本保存時間長,讓其仍有利用價值,在特定的情境下可做使用,比如可作為保存歷史資料使用,例如美國NASA,政府機構等等,或作為備份使用,不過要注意其讀寫速度很慢,比固態硬碟如HDD還慢上許多
第一天上班,你需要設定 SSH key,因為你將使用 SSH 來 clone 代碼 Repo。SSH 與 HTTP 的主要差別在於安全性和速度,而 SSH 比 HTTP 更加安全和快速。本篇文章的主要目的是介紹如何在一台電腦上使用 SSH 登入多個 GitHub 和 GitLab 帳戶。 不管你的
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
我對於自己開發的API會習慣性寫一份swagger文件方便前端串接,但因為這些文件都是存在我個人的swagger帳號,且會受限於免費版限制,再加上剛好跟PM在討論如何維護我們的文件,於是我就開始著手將swagger自己部署到公司管理後台。 這樣做的好處: (1)後端都可以編輯 (2)文件隸屬於
When you want to use your non-publish yet package in your other project, you need to do these: step 1 go to package and run : npm link packageNameHe
Magnetic tapes是一個自古就有的技術,至今還是有企業在使用,也有不斷在被改良中。 其特性:容量大低成本保存時間長,讓其仍有利用價值,在特定的情境下可做使用,比如可作為保存歷史資料使用,例如美國NASA,政府機構等等,或作為備份使用,不過要注意其讀寫速度很慢,比固態硬碟如HDD還慢上許多
第一天上班,你需要設定 SSH key,因為你將使用 SSH 來 clone 代碼 Repo。SSH 與 HTTP 的主要差別在於安全性和速度,而 SSH 比 HTTP 更加安全和快速。本篇文章的主要目的是介紹如何在一台電腦上使用 SSH 登入多個 GitHub 和 GitLab 帳戶。 不管你的
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
我對於自己開發的API會習慣性寫一份swagger文件方便前端串接,但因為這些文件都是存在我個人的swagger帳號,且會受限於免費版限制,再加上剛好跟PM在討論如何維護我們的文件,於是我就開始著手將swagger自己部署到公司管理後台。 這樣做的好處: (1)後端都可以編輯 (2)文件隸屬於
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
在開發 Rust 或是使用 Rust 編寫的 CLI 工具時,常會看見類似下方的錯誤訊息: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 簡單寫一下該怎麼做。
Thumbnail
對於剛學習 Rust 的人來說,最一開始不是看 Youtube 的影片或是跟著 Rust 官方手冊 The Book 學習,這邊來推薦一個練習 Rust 的專案,名為 rustlings。 rustlings 包含著一些簡單的題目,來讓你更習慣閱讀或編寫 Rust 程式碼。該專案會在每道題目上給予
Rust Remover 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https:
Thumbnail
由Faxdoc、Sunnydaze,、Happy squared共同開發的遊戲《鏽蝕苔蘚 Rusted Moss》,打破常規將「吊繩」結合「射擊」、「物理效果」及「類銀河戰士惡魔城」,嘗試帶給玩家全新的遊戲體驗。
Thumbnail
近期已經進去了一個看完語法,進去實作的階段,自然需要去挑選一個適合的環境來開發了。 原本使用的VS code,基本的使用上沒什麼問題,只是每當我要裝一些套件時就會報錯,相信花點時間,這些錯都可以解決,但我突然轉念一想,不如換個環境來寫寫看吧。於是就把矛頭轉向系統內建的Vim了。
Thumbnail
承接上一段,接下來到了一段Rust比較新奇的部分也是控制記憶體的部分AKA所有權。 Rust 程式設計語言 所有權是在Rust處理記憶體的機制,記憶體由所有權系統管理,且編譯器會在編譯時加上一些規則檢查。 在這之前需要知道的部分 每個變數有一個所有者(owner) 同時間只能有一個所有者 只要擁有者
Thumbnail
最開始學習一個語言肯定是從基礎語法開始,Rust還算滿幸運的有基礎語法的翻譯,這翻譯是在官方網站下推薦的,初步看起來沒什麼問題,在開發環境中我選擇visual studio code,基本的安裝,如果有問題的話,我相信網路上都找得到答案 第二章節就即開始基礎的Rust用法,非常有C語言的感覺,就是讓
Thumbnail
第一篇文章就先說說我的背景,並做一些開始接著寫文章前的介紹。
Thumbnail
Rustic AnyMal項目介紹和白名單贈送~
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
在開發 Rust 或是使用 Rust 編寫的 CLI 工具時,常會看見類似下方的錯誤訊息: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 簡單寫一下該怎麼做。
Thumbnail
對於剛學習 Rust 的人來說,最一開始不是看 Youtube 的影片或是跟著 Rust 官方手冊 The Book 學習,這邊來推薦一個練習 Rust 的專案,名為 rustlings。 rustlings 包含著一些簡單的題目,來讓你更習慣閱讀或編寫 Rust 程式碼。該專案會在每道題目上給予
Rust Remover 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https:
Thumbnail
由Faxdoc、Sunnydaze,、Happy squared共同開發的遊戲《鏽蝕苔蘚 Rusted Moss》,打破常規將「吊繩」結合「射擊」、「物理效果」及「類銀河戰士惡魔城」,嘗試帶給玩家全新的遊戲體驗。
Thumbnail
近期已經進去了一個看完語法,進去實作的階段,自然需要去挑選一個適合的環境來開發了。 原本使用的VS code,基本的使用上沒什麼問題,只是每當我要裝一些套件時就會報錯,相信花點時間,這些錯都可以解決,但我突然轉念一想,不如換個環境來寫寫看吧。於是就把矛頭轉向系統內建的Vim了。
Thumbnail
承接上一段,接下來到了一段Rust比較新奇的部分也是控制記憶體的部分AKA所有權。 Rust 程式設計語言 所有權是在Rust處理記憶體的機制,記憶體由所有權系統管理,且編譯器會在編譯時加上一些規則檢查。 在這之前需要知道的部分 每個變數有一個所有者(owner) 同時間只能有一個所有者 只要擁有者
Thumbnail
最開始學習一個語言肯定是從基礎語法開始,Rust還算滿幸運的有基礎語法的翻譯,這翻譯是在官方網站下推薦的,初步看起來沒什麼問題,在開發環境中我選擇visual studio code,基本的安裝,如果有問題的話,我相信網路上都找得到答案 第二章節就即開始基礎的Rust用法,非常有C語言的感覺,就是讓
Thumbnail
第一篇文章就先說說我的背景,並做一些開始接著寫文章前的介紹。
Thumbnail
Rustic AnyMal項目介紹和白名單贈送~