os-comp-记录
Jacksing

这一博文用于记录每日所学

2022/10/20

Rust 语言圣经 作为学习材料来学习 Rust 语言。目前进度看到字符串与切片。不得不说,Rust 还是有点难度的。

今日感悟:

  1. 表达式与语句。这东西确实是 C++ 所不在意的,目前还是以 C++ 的理解来认识这一表达式,但是语句没想到啥很好的理解方式。暂且忽略
  2. 学习所有权的时候,突然能理解到 C++ 的移动语义具体是在说什么了。所以这里目前也不是什么难点
  3. 借用和解引用让人感觉特别繁琐且麻烦

2022/10/21

今日进度:元组 -> 流程控制

  1. 复合类型有点麻烦!
  2. 枚举的特性在 rust 里是一个挺不错的存在,能够包罗万千,我很喜欢这种东西
  3. 结构体内部变量的所有权也能够转移出去,感觉这个特性很可怕,还是得悠着点用。其他的地方倒和 C++ 没啥太大区别
  4. 流程控制这里,for 循环可能导致的所有权转移需要额外注意下,不过用久了估计就是习惯性加上引用

2022/11/02

今日感悟:本来打算暂时放弃学习了,想着以现在工作的语言为主,先好好学学 C++ 的模板,不过突然仔细想了想,也不见得我就真乖乖去学丫,还是捡起来吧。这回以测试为主,边测试边啃,快速过完 rust 的基本概念,之后学习用到了再来啃。

  1. 学到了个 as 关键词,看起来是用来转换类型的
  2. 原来序列可以划分为两类,… 和 …=,这是之前忽视的地方
  3. 单元类型占用空内存,这倒跟 C++中空类不一样,这样怎么知道这个单元类型的具体位置呢?
  4. rust 的字符原来采用的是 Unicode 编码,这个和 C++ 的 char 类型不一样,C++ 的 char 类型是 ASCII 编码,这个需要注意下,之前一直以为是 utf-8。
  5. 表达式和语句究竟是怎样的一个区别到现在都还没搞懂,暂时也只能记住 += 这东西不是表达式

2022/11/05

今日感悟:太忙了太忙了,工作后要学习下真的好难抽出时间。

  1. 单个字符采用 Unicode 编码,占用四个字节,但是字符串却是采用 UTF-8 编码。这个地方确实有点诡异
  2. 借用和所有权那里倒感觉还好,这套机制挺不错的,但是学习起来难度并不大,所有权最为简单的理解就是 std::unique_ptr
  3. 枚举看来看去,感觉就是一个带名字的元组,同时提供了一个父类的概念出来
  4. 始终 if let 语句有点难以理解,从 StackOverflow 上找到一个回答,虽然也没有很好的解释,但是从评论找到了 Refutability: Whether a Pattern Might Fail to Match 这个章节,倒是解决了一点关于模式匹配的困惑。let 的要求是不可驳模式匹配,所以 if let PATTERN = SOME_VALUE {} 这里可以这么理解,如果 pattern 能够匹配到 SOME_VALUE,那么执行后续的表达式。这样即便 PATTERN 会是 Some(x) 需要赋值的东西,也可以通过匹配来理解。
  5. 大抵是 C++ 写多了,对于诸如 匹配守卫,**@绑定** 这类语法糖,唯一的感觉就是好繁琐

番外:
我们可以写出这样的代码:

1
2
3
4
5
let o: Option<i32> = Some(5);

let a = if let Some(x) = Some(o) {
o
};

编译的时候一定会报错:

1
2
3
4
5
= note: expected unit type `()`
found enum `Option<i32>`
= note: `if` expressions without `else` evaluate to `()`
= help: consider adding an `else` block that evaluates to the expected type

根据 Refutability: Whether a Pattern Might Fail to Match 所了解到的,一个简单的解释角度就是,let 这东西所接受的值是 irrefutable 的,如果 o 是 None 的话,将不会产生任何的匹配,let 就接受不到任何的东西。在 StackOverflow 也有一个回答,但是不知道他想表达什么。

2022/11/06

  1. 在刷泛型的题目的时候,发现第一题所声明的结构体就看不懂,仔细翻了翻回去,才发现还有元组结构体这么个玩意儿
  2. 模板,泛型这东西,确实有点难,很不好理解。关掉 GitHub Copilot 后按着示例一点点写一遍代码,感觉还是有点繁琐,但是清晰了很多

2022/11/12

  1. 几天没看书了,确实忙啊
  2. 特征这东西确实不简单,不过暂时也只是了解了而已。不理解为什么不整个继承,却要使用特征对象这样的东西

2022/11/13

今日感悟:基础部分这就算是学完了,接下来该刷题目了

  1. 类型转换也是个麻烦事,不过一时半会暂时可以不管
  2. 后续的基础内容看起来还好,没啥特别要紧的。
  • 本文标题:os-comp-记录
  • 本文作者:Jacksing
  • 创建时间:2022-10-20 00:50:16
  • 本文链接:https://wzzzx.github.io/OS/os_comp_daily_schedule/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论