新手问题,求大神解答 不是很理解楼主你说的名词:静/动态作用域法。你是要问static关键字吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先你要理解所谓“自由变量”的概念,就是一个函数非本地定义也不是函数参数的变量。 从实现的角度,所谓静态还是动态作用域,它们对“自由变量”的定位是不一样的。 动态作用域中查找自由变量,是顺着函数调用活动纪录形成的堆栈反向查找(当然这只是一种实现方式,还有别的实现方式),所谓的“动态链”。 静态作用域中查找自由变量,是在函数定义时的环境中查找。为了搞定静态作用域,可以把函数实现为一个闭包(即包含代码和定义时的环境的一个二元组),这样查找自由变量就方便多了。 从写解释器的方面看,实现静态作用域更麻烦,所以很多解释语言象lisp、perl初期都用动态作用域,现在还有一些lisp方言如newlisp、picolisp也是动态作用域。 如何用一个树型结构来表示一个文件夹下的文件(夹)结构? Unix上部署java程序的问题 关于打包的问题 传参!!传参!!传参!! 小小Hibernate问题。希望帮我,谢谢了! 100分谁给我讲一下properties类的基本使用方法! Jcreator或netbeans如何生成EXE? java Date Java 正则表达式 sychronized与非synchronized的协调 java包的编译和运行 正则表达式:除了某个字符之外的字符,怎么写?
从实现的角度,所谓静态还是动态作用域,它们对“自由变量”的定位是不一样的。
动态作用域中查找自由变量,是顺着函数调用活动纪录形成的堆栈反向查找(当然这只是一种实现方式,还有别的实现方式),所谓的“动态链”。
静态作用域中查找自由变量,是在函数定义时的环境中查找。为了搞定静态作用域,可以把函数实现为一个闭包(即包含代码和定义时的环境的一个二元组),这样查找自由变量就方便多了。
从写解释器的方面看,实现静态作用域更麻烦,所以很多解释语言象lisp、perl初期都用动态作用域,现在还有一些lisp方言如newlisp、picolisp也是动态作用域。