RX0063

领域: 解析

错误消息

%s 在嵌套的 fn 内被读取,却属于外层的 fn,这是一个闭包(%s)

消息中的 %s 表示引擎抛出错误时填入的具体内容。

小故事

你在一个函数里,又写了一个函数,里面这个小函数,偷偷用了外面那个函数的一个值。看起来很方便,对吧?可是在 rush 里,这叫闭包,是被禁止的。为什么?因为闭包是在悄悄地把外层调用的状态带进内层,而你从来没有明明白白地传进去,这就是隐藏的耦合。一个内层的 fn,只能用它自己的参数和值,加上所在的模块,不能碰外层 fn 的值。注意,这个名字确实存在,所以引擎不会说找不到,而是直接告诉你,这是闭包,而且给出了出路。怎么改?把那个值,作为参数,明明白白地传给内层的 fn。记住:想用,就传进来,别偷偷拿。

文本来自 Rush 引擎的错误目录。