半静态语言–原理和价值分析 - 编程入门网
yingProducts for method call ''add'' , ''com.alibaba.saling.Product'' is required.
As for the previous Velocity code snippet [Code 1], after executing ''vcheck'' command on console, 半静态语言–原理和价值分析(6)时间:2010-12-30 infoq 何坤4.3 变量声明 变量声明就是对变量的类型进行声明。变量声明根据放置的地点分为两种,显示声明(Explicit Declaration)和隐式声明(Implicit Declaration)。 显式声明 显式声明采用特殊指令(Directive)或语句(Statement),在源码中对变量进行类型声明。 显式声明通常的格式为: <Declaration Directive> <Type> <varList> 为了保持与运行时解释器的兼容性,我们引入一种“基于注释的扩展声明指令”技术。以Velocity模板语言(VTL)为例, 在Velocity注释指令“##”上扩展“##contentrdquo;指令用于变量声明。如下例所示: [Code 3] showBuyProducts_static.vm
对于其他动态类型语言,同样使用“基于注释的扩展声明指令”来实现兼容性的半静态语言。
隐式声明 隐式声明不用在源码中编写声明语句,而从配置文件或其他地方分析变量声明。例如,使用Velocity进行Web App开发时,如果需要直接频繁操作request,response,session等Servlet容器对象,编译器可以将它们作为内置变量,使用隐式声明。如下表所示:
以下代码使用隐式声明变量 request, session,
这段代码看起来,对现有Velocity语法没有任何扩展. 但实际上,在编译时,编译器使用内置变量对源码进行类型检查。 如果编写了一段错误的调用,例如: $session.getParameter("loginTime") 则编译器输出一条“方法不存在的”错误信息: Error: line:12, column:5, method ''getParameter'' not found for $session!. 半静态语言–原理和价值分析(7)时间:2010-12-30 infoq 何坤4.4 语法约束 半静态语言基于某种动态类型语言进行实现,但它在语法语义上更接近与静态类型语言。在这两个端点,存在一些矛盾的地方,比如:变量动态定型,ducking type等。因此,半静态语言需要有语法约束: 变量先声明,后使用 变量在作用域scope内置能声明为一个类型; 禁止Ducking type 也就是多, 动态语言的无继承多态特性不允许使用,因为这与静态类型系统是冲突的。 如果违反这几个规则,编 |
|||||||||||||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |