[Day8] impl 以及 mod (将程序码放在不同档案使用)

我好怕我起床已经明天了,所以先来打文吧。
废话不多说,开始今天的内容。


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


<<:  Day6 梯度提升树(Gradient Boosting Decision Tree)

>>:  Day 7 网路宝石:【Lab】VPC外网 Public Subnet to the Internet (IGW) (上)

Day 26 - 设定 OSPF

今天以 FRR 为例,OSPF 需要设定一个 Router ID,且 Area 必须相同。 除此之外...

从零开始学游戏设计:模型基础 Part.3 雕塑场景

这是 Roblox 从零开始系列,入门章节的第十六个单元,今天你想亲手制作在海洋上的安静孤岛,就由你...

未来狂想:金融领域

人的科技文明发展始终来自於人性 在科技的发展与技术的发展之下,在很多的领域都有许多的应用,甚至因为科...

档案总管右半边Delphi TListView

档案总管右半边Delphi TListView 延续上一篇 想要写一个”档案总管”的想法,今天先来完...

Day 4 tensorflow 模型的存取与 mnist 分类

混了两天范例,该认真点了XD 今天要训练模型,储存模型,读取模型,拿模型分类图片, 以下程序码是昨天...