type
status
date
slug
summary
tags
category
icon
password
Property
Sep 5, 2023 12:44 PM
我们先来看这样一段代码:
我们看到ButtonText都实现了View属性, 抽象是一种不错的设计程序的方法, 帮助我们透明化的使用外部提供的API. 然后我们可能会下意识的写出下面的代码:
这段代码无法通过编译, 原因就是返回值View需要在编译器确认大小. 我们需要把它装成一个胖指针.
嗯,这样就好很多. 但是编译器会爆种, 提出一个警告, 希望你把Box<View>改为Box<dyn View>.
这又是什么意思?
dyn 是动态的缩写, 意义其实很明显. 使用dyn修饰的类型, 会在程序执行期动态分发. 会有一定的RUNTIME开销.
现在我们把代码改成这样, 好多了.
接下来说说impl, 这个语法是个语法糖其实.怎么个语法糖呢?
真的就这么简单.
第二次说一遍, 这种T(泛型)写法在入参可以这么做, 但是返回值不行. 除非你的返回值只返回一个T实现. 两种以上请重载 (我乱说的,rust可能不支持)或者使用dyn.
Go的map的个什么结构2020-10-29
Loading...