美文网首页
6.9分配和重定义

6.9分配和重定义

作者: jarod_chan | 来源:发表于2015-12-16 21:34 被阅读26次

    set!可以改变一个变量的定义,但是它只能改变一个模块内部自己的定义,它无法改变导入的绑定。
    如果一个模块想授权其它模块改变自己的导出,可以导出自己的可变函数来改变自己的导出。
    禁止分配导入变量可以支持模块化,而且可以使程序执行更有效率。
    如果在模块里的一个标识符没有调用set!,那么这个标识符可以被当做常量。
    一般情况下重定义不被允许。基于文件的模块,简单修改文件不会在任何情况下重定义。因为文件模块在需要的时候被加载,而且之前加载的定义之后也可以使用。使用racket反射可以重定义一个模块。在repl中,非文件模块可以之定义,但是在重定义之前绑定引用,也会使重定义失败。
    为了测试的目的,racket反射层提供了一个参数compile-enforce-module-constants解除常量约束。

    相关文章

      网友评论

          本文标题:6.9分配和重定义

          本文链接:https://www.haomeiwen.com/subject/ebfphttx.html