4080|8

5225

帖子

239

TA的资源

管理员

《Rust实战》书友互动第三集:复合数据类型 何也? [复制链接]

在上一集(《Rust实战》书友互动第二集:Rust语言基础 有何不同? 的网友互动中,他们讨论了:
-Rust的for与C的for不同
-Rust指针的概念,与传统指针的不同
-0.1 + 0.2 == 0.3会被报错原因,

-带分号和不带分号语句区别,直接上代码考证

第二章节总结角色的@ltaodream网友总结了本章节的谈到这章节绝大多数的语法结构和数据类型,都可在其他语言中找到,理解起来并不难;并提出能否在编译期计算出某个数据类型在运行过程中占用的内存空间的大小的指标。同时留下了一个思考题:rust能实现python中那种无限大小的数字类型以及js中bumber那种通用的数字类型吗?

本集互动继续是数据类型,不过是复合的,会有怎样的不一样呢?期待书友们互动讨论~

 

演绎时间:即日起至4月28日
脚本限定:《Rust实战》第三章 复合数据类型
 
角色分配:
提问角色(4位)和解题角色(4位)、总结角色(2位),下方跟帖第一位书友嘉宾是提问角色,第二个是解题角色,解答第一个提问,解答完后,解题角色可以继续提问,也可以不提问,结束一次问答循环。后面参与继续新起问答接龙即可,最后2位是章节总结角色,以文字或者思维导图的形式,对本章进行总结,至此一次互动结束。注意:提问角色发布的问题,要求能在第三章节书中有迹可循,且对解题者理解、学习Rust有切实意义;提问角色所发布的问题不可重复。
 
《Rust实战》吃螃蟹的书友们,别懈怠,我们继续互动成长啦~
 
 
 
 

活动交流群

论坛有开设嵌入式交流群,欢迎感兴趣的小伙伴,微信添加“helloeeworld”为好友,对话:加入嵌入式交流群,入群交流。

扫码,对话:加入嵌入式交流群。

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

最新回复

不就是OOP设计模式的"合成复用原则"思想吗,这本来是一个和语言无关而是和设计模式思想相关的一个概念,硬是把其作为语言的语义设计其实没什么意义,感觉Rust是为了设计而设计了,个人感觉专门设计这样的语义其实没有必要。   详情 回复 发表于 2024-5-6 22:49

回复
举报

183

帖子

12

TA的资源

一粒金砂(高级)

用println!宏打印出自定义结构体的内容,需要做哪些工作?


回复

60

帖子

0

TA的资源

一粒金砂(中级)

使用println!宏打印出自定义结构体的内容,需要实现std::fmt::Display trait。这个trait是一个用于格式化输出的通用接口,可以在println!宏中使用


回复

60

帖子

0

TA的资源

一粒金砂(中级)

trait 的依赖和 OOP 继承的区别在哪里?(千万不要简单地把 trait 当作其他语言中的 class 或 interface 去理解使用哦)

点评

我在书中没有找到答案,搜索后有如下结果: 官方是把trait中的方法和继承类也做了优先级对比。我告诉你,千万不要作对比。你会蒙圈,也因此需要多记几个东西。 你只要记住。trait的优先级没有本来的类中的方法  详情 回复 发表于 2024-4-24 08:29

回复

6842

帖子

11

TA的资源

版主

ltaodream 发表于 2024-4-22 20:06 trait 的依赖和 OOP 继承的区别在哪里?(千万不要简单地把 trait 当作其他语言中的 class 或 interface 去 ...

我在书中没有找到答案,搜索后有如下结果:

官方是把trait中的方法和继承类也做了优先级对比。我告诉你,千万不要作对比。你会蒙圈,也因此需要多记几个东西。

你只要记住。trait的优先级没有本来的类中的方法高就可以了。如果 本来得类中有了trait中相同名字的方法按照本来的类的方法执行。至于继承的类,只要记住。那就是我继承类。因为trait属于本来的类的一部分了。所以对于继承来的类。就是普通继承的特性。

总的来说,他与OOP有本质的区别。

点评

是道思考题,总体来说,就是组合优于继承  详情 回复 发表于 2024-4-24 10:54

回复

60

帖子

0

TA的资源

一粒金砂(中级)

lugl4313820 发表于 2024-4-24 08:29 ltaodream 发表于 2024-4-22 20:06 trait 的依赖和 OOP 继承的区别在哪里?(千万不要简单地把 trait 当 ...

是道思考题,总体来说,就是组合优于继承


点评

不就是OOP设计模式的"合成复用原则"思想吗,这本来是一个和语言无关而是和设计模式思想相关的一个概念,硬是把其作为语言的语义设计其实没什么意义,感觉Rust是为了设计而设计了,个人感觉专门设计这样的语义其  详情 回复 发表于 2024-5-6 22:49

回复

288

帖子

0

TA的资源

一粒金砂(高级)

我理解的rust的服用数据类型:

在Rust语言中,复合数据类型包括结构体(struct)和枚举(enum)。

结构体是一种自定义的数据类型,可以包含多个不同类型的字段,用于组织和存储相关的数据。通过定义结构体,可以创建具有特定属性和行为的对象。

枚举是一种特殊的数据类型,用于定义一组可能的取值。枚举可以包含多个不同的变体(variant),每个变体可以携带不同类型的数据。枚举常用于表示具有有限可能性的情况,例如不同类型的事件或状态。

通过使用结构体和枚举,Rust语言提供了丰富的复合数据类型,使得开发者可以更好地组织和管理数据。

 

如果使用rust实现数据返回,是使用result来实现吗?还有别的方式读取一个变量的数据值吗?

点评

在Rust中,Result 是一种常用的方式来表示操作可能成功或失败,并返回相应的结果或错误信息。它通常用于错误处理,而不是仅仅作为数据返回的方式。Result 是一个枚举,它有两个可能的变体:Ok 和 Err。Ok 包含了操作  详情 回复 发表于 2024-4-28 23:38

回复

45

帖子

1

TA的资源

一粒金砂(中级)

yangjiaxu 发表于 2024-4-27 21:45 我理解的rust的服用数据类型: 在Rust语言中,复合数据类型包括结构体(struct)和枚举(enum)。 结 ...

在Rust中,Result 是一种常用的方式来表示操作可能成功或失败,并返回相应的结果或错误信息。它通常用于错误处理,而不是仅仅作为数据返回的方式。Result 是一个枚举,它有两个可能的变体:Ok 和 Err。Ok 包含了操作成功时的返回值,而 Err 包含了错误信息。

如下所示:fn divide(a: u32, b: u32) -> Result<u32, &'static str> { if b == 0 { Err("Cannot divide by zero") } else { Ok(a / b) } }。

在上面例子中,divide 函数尝试进行除法运算。如果除数为零,它返回一个 Err 包含错误信息;否则,它返回一个 Ok 包含结果。

当你只是需要返回数据而不需要表示操作是否成功时,通常可以直接返回数据的类型,而不是 Result。例如,一个函数可以简单地返回一个整数、一个字符串或者一个自定义的结构体等。读取变量的数据值在Rust中非常直接。你只需要使用变量的名字即可。如下:let x = 5; // 定义一个变量x,并赋值为5  
println!("The value of x is: {}", x); // 读取并打印x的值

 


回复

502

帖子

4

TA的资源

纯净的硅(高级)

ltaodream 发表于 2024-4-24 10:54 是道思考题,总体来说,就是组合优于继承

不就是OOP设计模式的"合成复用原则"思想吗,这本来是一个和语言无关而是和设计模式思想相关的一个概念,硬是把其作为语言的语义设计其实没什么意义,感觉Rust是为了设计而设计了,个人感觉专门设计这样的语义其实没有必要。


回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表