Rust:一个不再有 C/C+的,实现安全实时软件的未来( 十 )
多态性
C++ 支持多种形式的多态,作者认为这有助于语言的丰富性。静态多态中有模板、函数和以及操作符重载;动态多态有子类。但这些表达形式也有非常明显的缺点:子类与父类之间的紧密耦合,导致子类过于依赖父类,缺乏独立性;模板则因为其缺乏参数化的特性而导致调试困难。
Rust 中的 trait 则定义了一种指定静态动态接口共享的行为。Trait 类似于其他语言中接口(interface)的功能,但 Rust 中只支持实现(implements)而没有继承(extends)关系,鼓励基于组合的设计而不是实现继承,降低耦合度。
下面来看一个简单又有趣的例子:
首先定义一个名为 Rateable 的 trait,然后需要调用函数 fluff_rating 并返回一个浮点数来实现 Rateable。接着就是在 Alpaca 结构体上对 Rateable trait 的实现。下面是使用同样的方法定义 Cat 类型。
在这段例子中作者使用了 Rust 的另一特性,模式匹配。它与 C 中的 switch 语句用法类似,但在语义上却有很大的区别。switch 块中的 case 只能用来跳转,模式匹配中则要求覆盖全部可能性才能编译成功,但可选的匹配范围和结构则赋予了其灵活性。
推荐阅读
- 雷神|原神:曾经有一个强力五星角色,却因各种“流言蜚语”,擦肩而过
- 次世代|韩国战队全军覆没,斗鱼选手实力强大,一人击溃一个队
- 手机游戏|LOL手游第一个世界赛,破晓杯火热开战,DKG能紧随EDG夺冠吗?
- xyg|月光败给XYG不敢去采访,怕主持人问他一个问题!根本没办法解释
- 卡牌|王者峡谷最难抓的五个英雄,暗信算一个,榜首玩起来非常快乐
- 传奇世界|传奇世界:盘点当年出现过哪些漏洞,有一个至今都存在?
- 扁鹊|裴擒虎虎年限定有变,嫦娥拒霜思配音引热议,扁鹊有一个好消息
- 绝地求生|不播绝地求生,跑去玩双马尾少女?PDD后又一个主播“沉迷”幻塔
- 光·遇|光遇:追光季复刻盘点,下一个返场先祖,可能是笛子或者灯泡斗篷
- 地下城与勇士|DNF:“全民云上”时代到来,一个过气小副本,究竟有何魅力?