File tree Expand file tree Collapse file tree 1 file changed +7
-5
lines changed
Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ outline: deep
4040
4141<<<@/code/release/error_handle.zig#JustOneError1
4242
43- [ 自动推断] ( #合并和推断错误 ) 函数返回的错误集时,会经常用到这种写法。
43+ [ 自动推断] ( #合并和推断错误 ) 函数返回的错误集时,会经常用到这种写法。
4444
4545## 全局错误集
4646
@@ -172,14 +172,16 @@ outline: deep
172172
173173::: info 🅿️ 提示
174174
175- > _ 当函数返回自动推导的错误集时,相对的这个函数会变成一个类泛型函数(因为这需要编译器在编译时进行推导),因此在执行某些操作时会变得有些不方便,例如获取函数指针或者在不同构建目标之间保持相同的错误集合。另外,推导错误和递归并不兼容。_
175+ > _ 当函数返回自动推导的错误集时,相对的这个函数会变成一个类泛型函数(因为这需要编译器在编译时进行推导),因此在执行某些操作时会变得有些不方便,例如获取函数指针或者在不同构建目标之间保持相同的错误集合。_
176+ >
177+ > _ 注意,错误集推导和递归并不兼容。_
176178
177- 上面这句话看起来有点云里雾里,我们来两个例子来说明就可以 :
179+ 上述内容可能不够清晰,用两个例子作为说明 :
178180
1791811 . 不同构建目标之间可能存在着专属于架构的错误定义,这使得在不同架构上构建出来的代码的实际错误集并不相同,函数也同理(与 cpu 指令集实现有关)。
180- 2 . 当我们使用自动推导时,推导出的错误集是最小错误集,故可能一个函数被推导出 ` ErrorSetOne!type ` 和 ` ErrorSetTwo!type ` 两个错误集,这就使得在递归上出现了不兼容,不过可以使用 ` switch ` 来匹配错误集来解决该问题 。
182+ 2 . 当我们使用自动推导时,推导出的错误集是最小错误集,故可能一个函数被推导出 ` ErrorSetOne!type ` 和 ` ErrorSetTwo!type ` 两个错误集,这会使得在递归上出现不兼容 。
181183
182- 对于上面的问题,其实更好的解决办法就是显式声明一个错误集,这会明确告诉编译器返回的错误种类都有什么 。
184+ 对于上述问题,解决办法是显式声明一个错误集,这会明确告诉编译器返回的错误集合都包含哪些错误 。
183185
184186> _ 根据文档说明,上面的这些限制可能在未来会被改善。_
185187
You can’t perform that action at this time.
0 commit comments