我好怕我起床已經明天了,所以先來打文吧。
廢話不多說,開始今天的內容。
impl 由於我自己不太會使用其他語言中的 class 所以其實我不太知道他跟其他語言的 class 差別在哪,有知道的可以在底下留言 這絕對不是釣魚讓人留言
struct Box {
weight: i32,
height: i32,
length: i32,
}
impl Box {
fn how_big(&self) -> i32 {
self.height * self.length * self.weight
}
}
fn main() {
let st = Box {
weight: 50,
height: 30,
length: 10,
};
println!("{}", st.how_big());
}
這次平台使用的是 Windows 11 但是因為是介紹語法所以應該沒差 (?
上面的範例可以看到,我定義出了一個 Struct Box 然後建立一個 Box 的 impl
要注意的是 box 是智慧指標的關鍵字,請不要誤用。
後面的話會發現說,定義出了一個名為 st 的 Box 架構變數,那下面則是直接 print 出來要得體積,可以發現說其實只要多加一個點就可以了。
也就是就像取值一樣使用就可以了。記得加括號,畢竟還是呼叫函式。
那可能有些人會想到說,是不是只能這樣綁定一個 impl 後面就不能再額外定義了
這個問題的結果是,他可以創建出無限同 struct 的 impl 所以這點理應是沒有任何問題的。
如果用的跟我一樣是 IDEA 那應該會收到這個補全。 直接套用即可。
fn new(a: i32, b: i32, c: i32) -> Box {
Box {
weight: a,
height: b,
length: c,
}
}
也可以把這個函數塞在 impl 裡,就能夠透過,這個直接創造一個新的 Box
按照範例上的寫會變成這樣
以上 大概就是 impl 的內容,水了一大段。
接下來教個 mod 吧
mod 主要是用在分檔案的時候,因為筆者真的很討厭 Code 亂亂的,所以經常區分出很多的檔案,那這邊就先講一下最簡單的,
第一點的話可以看到一個很簡單的函數,這個是我們等等要傳入 Main 裡面的。
第二點則是說這個東西是保存在跟 main 一樣的資料夾下的。
那麼就直接在第一行輸入 mod a;
也就是引用這個檔案。
如果想呼叫函數呢,就直接 a::a(); "::" 我記得是檔案導向的意思。
所以可以這樣用 owob
並且要注意的是,"想要呼叫的函數必須要是 public 狀態的" Rust 全部都是使用
private 的函數,意味著必須得要改為 pub 才能讓非此檔案的 functions 讀取你所到的資料
那如果說,要有資料夾區隔呢,就直接在該資料夾創立一個新的 mod.rs 檔案,那他會將此資料夾的東西都審核,也就是所有東西會先經過他處理引用才會回到 main,在我的 Github 上的 it幫 那個資料,就有使用此技巧的範例。
好了 今天就講到這裡,被我水了一篇,主要是我好想睡zzzzz 又怕一睡就過日了
明天再見,掰掰,先睡w