Logo
☆☆☆☆☆
0.0
Intermediate
30h

D语言中的高级编程技术

D 是一种多范式编程语言,融合了从底层到高层的多种强大编程概念。它强调内存安全、程序正确性以及实用性。本课程将教授你高级 D 语言特性,因此建议先掌握基础知识。 在本课程中,你将首先学习生命周期、结构体、函数重载和继承等关键概念,这些对高级 D 开发者至关重要。 课程后半部分,你将深入学习模板、指针、内存管理等内容。如果你希望将 D 编程能力提升到更高水平,那么本课程将为你打下坚实基础。 完成本课程后,你将具备充分的能力,将 D 语言经验应用于实际开发,开始构建自己的应用程序。

35 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
D语言中的高级编程技术
D 是一种多范式编程语言,融合了从底层到高层的多种强大编程概念。它强调内存安全、程序正确性以及实用性。本课程将教授你高级 D 语言特性,因此建议先掌握基础知识。 在本课程中,你将首先学习生命周期、结构体、函数重载和继承等关键概念,这些对高级 D 开发者至关重要。 课程后半部分,你将深入学习模板、...

WHAT YOU'LL LEARN

学习变量的生命周期和类型转换

Content

35 Lessons • 0 Quizzes • 0 Challenges

简介
  1. 1

    预期内容

生命周期、空值和 is 操作符
  1. 1

    生命周期

  2. 2

    基本操作

  3. 3

    空值与 is 操作符

  4. 4

    赋值为 null 值

  5. 5

    摘要

  6. 6

    关于生命周期、空值和 is 操作符的测验

类型转换
  1. 1

    自动类型转换

  2. 2

    算术运算和切片转换

  3. 3

    const、enum、immutable 和 bool 类型转换

  4. 4

    显式类型转换

  5. 5

    总结

  6. 6

    类型转换测验

结构体
  1. 1

    结构体(Structs)的定义

  2. 2

    构造

  3. 3

    复制和赋值

  4. 4

    结构体字面量和静态成员

  5. 5

    挑战:来玩扑克牌

  6. 6

    解决方案:来玩扑克牌

  7. 7

    结构体测验

可变数量的参数
  1. 1

    默认参数

  2. 2

    特殊关键字作为默认参数

  3. 3

    可变参数函数

  4. 4

    可变参数函数的生命周期

  5. 5

    挑战:执行计算

  6. 6

    解决方案:执行计算

  7. 7

    关于默认参数和可变参数函数的测验

函数重载与成员函数
  1. 1

    函数重载与重载解析

  2. 2

    用户定义类型的函数重载

  3. 3

    挑战:重载函数

  4. 4

    解决方案:重载函数

  5. 5

    成员函数

  6. 6

    成员函数示例

  7. 7

    const ref 参数

  8. 8

    const 和 inout 成员函数

  9. 9

    函数重载与成员函数测验

构造函数和其他特殊函数
  1. 1

    构造函数:简介

  2. 2

    编译器生成的构造函数

  3. 3

    用户定义的构造函数与 static opCall() 的使用

  4. 4

    构造函数限定符

  5. 5

    不可变性与类型转换

  6. 6

    析构函数

  7. 7

    拷贝构造

  8. 8

    赋值运算符

  9. 9

    总结

  10. 10

    构造函数测验

操作符重载
  1. 1

    学习操作符重载

  2. 2

    可重载的运算符

  3. 3

    元素索引与切片操作符

  4. 4

    定义多个操作符

  5. 5

    操作符的返回类型

  6. 6

    opEquals()

  7. 7

    opCmp()

  8. 8

    opCall()

  9. 9

    索引运算符

  10. 10

    切片操作符

  11. 11

    opCast()

  12. 12

    opDispatch() 和 opBinaryRight()

  13. 13

    挑战:让单元测试通过

  14. 14

    解决方案:让单元测试通过

  15. 15

    关于操作符重载的测验

类简介
  1. 1

    与结构体的比较

  2. 2

    复制和赋值

  3. 3

    定义、构造与析构

  4. 4

    成员访问与成员函数

  5. 5

    is 和 !is 运算符

  6. 6

    摘要

  7. 7

    类的测验

继承
  1. 1

    简介

  2. 2

    继承层次结构

  3. 3

    父类成员

  4. 4

    重写成员函数的定义

  5. 5

    使用子类替换父类

  6. 6

    抽象成员函数和抽象类

  7. 7

    示例

  8. 8

    挑战:实现继承层次结构

  9. 9

    解决方案:实现继承层次结构

  10. 10

    总结

  11. 11

    继承测验

对象类
  1. 1

    typeid 和 TypeInfo

  2. 2

    toString 和 opEquals

  3. 3

    opCmp

  4. 4

    toHash

  5. 5

    挑战:为一个类实现 opEquals 函数

  6. 6

    解决方案:为类实现 opEquals 函数

  7. 7

    对象测验

接口
  1. 1

    接口继承

  2. 2

    静态成员函数

  3. 3

    最终成员函数

  4. 4

    抽象

  5. 5

    示例

  6. 6

    总结

  7. 7

    接口测验

销毁和作用域
  1. 1

    destroy()

  2. 2

    destroy() 示例

  3. 3

    作用域函数

  4. 4

    关于 destroy() 和 scoped() 的测验

模块和库
  1. 1

    模块

  2. 2

    导入模块

  3. 3

    库

  4. 4

    模块与库测验

封装与保护属性
  1. 1

    封装

  2. 2

    保护属性

  3. 3

    模块导入与封装的使用

  4. 4

    D语言中的封装示例

  5. 5

    关于封装与保护属性的测验

UFCS、属性与契约编程
  1. 1

    通用函数调用语法

  2. 2

    属性

  3. 3

    属性函数

  4. 4

    属性的使用

  5. 5

    前置条件和后置条件

  6. 6

    不变块

  7. 7

    合约继承

  8. 8

    关于 UFCS、属性和契约编程的测验

模板
  1. 1

    简介

  2. 2

    函数模板

  3. 3

    类型推导与显式类型指定

  4. 4

    模板实例化与模板特化

  5. 5

    结构体和类模板

  6. 6

    默认模板参数与模板实例化

  7. 7

    类模板示例

  8. 8

    函数模板示例

  9. 9

    模板测验

指令、别名和 with
  1. 1

    pragma(msg) 和 pragma(lib)

  2. 2

    pragma(inline)

  3. 3

    pragma(startaddress) 和 pragma(mangle)

  4. 4

    别名:缩短长名称

  5. 5

    别名:设计灵活性

  6. 6

    别名:揭示父类的隐藏名称

  7. 7

    别名 this

  8. 8

    with

  9. 9

    关于 Pragmas、别名和 with 的测验

指针
  1. 1

    引用的概念

  2. 2

    语法

  3. 3

    指针值与地址运算符 &

  4. 4

    访问操作符与点操作符

  5. 5

    修改指针的值

  6. 6

    指针与数组的使用

  7. 7

    void* 指针与逻辑表达式中的指针

  8. 8

    指针与 new、.ptr 和 in 操作符的使用

  9. 9

    何时使用指针

  10. 10

    示例:一个简单的链表

  11. 11

    示例:通过 ubyte* 观察内存内容

  12. 12

    挑战:交换数字

  13. 13

    解决方案:交换数字

  14. 14

    指针测验

位运算
  1. 1

    数据在最低层次的表示

  2. 2

    二进制数制

  3. 3

    十六进制数制

  4. 4

    位运算

  5. 5

    语义

  6. 6

    常见用途

  7. 7

    挑战:将IPv4地址转换为其点分十进制形式

  8. 8

    解决方案:将IPv4地址转换为其点分十进制形式

  9. 9

    挑战:将四个八位数值转换为对应的32位值

  10. 10

    解决方案:将四个八位组数值转换为相应的32位值

  11. 11

    挑战:创建指定宽度的掩码

  12. 12

    解决方案:创建指定宽度的掩码

  13. 13

    位运算测验

条件编译
  1. 1

    简介

  2. 2

    调试

  3. 3

    版本(标签)和版本(级别)

  4. 4

    static_if、static_assert 和类型特性

  5. 5

    is 表达式

  6. 6

    is (T == Specifier)

  7. 7

    is (T 标识符 == 指定符)

  8. 8

    is (/* ... */ 说明符, 模板参数列表)

  9. 9

    条件编译测验

函数指针、委托和lambda表达式
  1. 1

    函数指针

  2. 2

    函数指针作为参数和成员

  3. 3

    匿名函数

  4. 4

    委托

  5. 5

    委托属性、延迟参数与延迟可变参数函数

  6. 6

    `toString()` 带有委托参数

  7. 7

    章节总结

  8. 8

    函数指针、委托和Lambda表达式的测验

使用 foreach 遍历结构体和类
  1. 1

    foreach 对范围成员函数的支持

  2. 2

    opApply 和 opApplyReverse 成员函数

  3. 3

    循环计数器

  4. 4

    挑战:设计一个 NumberRange 结构体

  5. 5

    解决方案:设计一个 NumberRange 结构体

  6. 6

    嵌套函数、结构体和类

  7. 7

    关于使用 foreach 遍历结构体和类的测验

联合体、标签、goto 语句和元组
  1. 1

    联合体

  2. 2

    匿名联合体与访问其他成员

  3. 3

    联合体示例

  4. 4

    标签和 goto

  5. 5

    元组:tuple()

  6. 6

    元组:AliasSeq

  7. 7

    元组:.tupleof 属性

  8. 8

    关于联合体、标签、goto 语句和元组的测验

更多模板
  1. 1

    快捷语法

  2. 2

    模板的类型

  3. 3

    模板参数:类型与值

  4. 4

    模板参数:this 和别名

  5. 5

    模板参数:元组

  6. 6

    typeof 的几种形式

  7. 7

    模板特化与元编程

  8. 8

    编译时多态与代码膨胀

  9. 9

    模板约束

  10. 10

    命名模板约束

  11. 11

    使用模板进行多维运算符重载

  12. 12

    多维操作符重载示例

  13. 13

    摘要

  14. 14

    模板测验

更多函数
  1. 1

    返回类型属性:auto 和 ref

  2. 2

    返回类型属性:auto ref 和 inout

  3. 3

    行为属性:纯函数

  4. 4

    行为属性:nothrow 和 @nogc

  5. 5

    代码安全属性

  6. 6

    编译时函数执行(CTFE)

  7. 7

    总结

  8. 8

    函数测验

混入(Mixins)
  1. 1

    模板混入

  2. 2

    字符串混入

  3. 3

    混入命名空间

  4. 4

    运算符重载与析构函数中的混入(Mixins)

  5. 5

    导入文本文件

  6. 6

    示例

  7. 7

    混入(Mixins)测验

范围
  1. 1

    简介与历史

  2. 2

    D语言中的范围使用

  3. 3

    范围层次结构与迭代

  4. 4

    输入范围

  5. 5

    使用切片作为范围

  6. 6

    字符串解码为 dchar 范围

  7. 7

    没有实际元素的范围

  8. 8

    无限范围及返回范围的函数

  9. 9

    std.range 和 std.algorithm 模块

  10. 10

    ForwardRange 和 BidirectionalRange

  11. 11

    RandomAccessRange:无限

  12. 12

    RandomAccessRange:有限

  13. 13

    输出范围

  14. 14

    使用切片作为输出范围

  15. 15

    范围类型模板

  16. 16

    元素类型和其他范围模板

  17. 17

    运行时多态性与范围

  18. 18

    摘要

  19. 19

    范围测验

静态foreach与并行处理
  1. 1

    static foreach

  2. 2

    并行性

  3. 3

    taskPool.parallel()

  4. 4

    任务

  5. 5

    异常捕获与 Task 的成员函数

  6. 6

    taskPool.asyncBuf()

  7. 7

    taskPool.map() 和 taskPool.amap()

  8. 8

    taskPool.reduce()

  9. 9

    使用多个函数和任务池的元组结果

  10. 10

    总结

  11. 11

    关于静态 foreach 和并行性的测验

消息传递并发
  1. 1

    概念

  2. 2

    启动线程

  3. 3

    线程标识符

  4. 4

    消息传递

  5. 5

    消息传递:示例

  6. 6

    期望接收不同类型的消息

  7. 7

    工作进程执行过程中的异常

  8. 8

    检测线程终止

  9. 9

    邮箱管理

  10. 10

    优先级消息和线程名称

  11. 11

    总结

  12. 12

    并发中的消息传递测验

数据共享并发
  1. 1

    在线程之间共享数据

  2. 2

    竞态条件示例

  3. 3

    使用 synchronized 避免竞态条件

  4. 4

    static this() 和原子操作

  5. 5

    总结

  6. 6

    数据共享并发性测验

纤维
  1. 1

    调用栈

  2. 2

    使用方法

  3. 3

    范围实现中的纤维

  4. 4

    将协程呈现为范围

  5. 5

    异步输入输出中的纤程

  6. 6

    异常和协程

  7. 7

    协作式多任务处理

  8. 8

    总结

  9. 9

    关于纤维的测验

内存管理
  1. 1

    内存

  2. 2

    垃圾回收器

  3. 3

    分配内存

  4. 4

    内存块属性

  5. 5

    对齐:.alignof 属性

  6. 6

    对齐:.offsetof 属性

  7. 7

    在特定内存位置构造变量

  8. 8

    对象的构造与析构

  9. 9

    摘要

  10. 10

    内存管理测验

用户定义属性(UDA)和运算符优先级
  1. 1

    用户自定义属性(UDA)

  2. 2

    UDA 示例

  3. 3

    UDA的优势

  4. 4

    运算符优先级

  5. 5

    关于UDA和运算符优先级的测验

结论
  1. 1

    总结!

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)