|
| 首页 → 程序开发 → .NET教程 |
| 阅读文章(首页/程序开发/.NET教程/) |
ES4新特征介绍之二:泛型、反射与其它编程体验
去年(2007)10月23日,ES4(SCMAScript4)标准出台了。我感到很遗憾,今天才得以了解ES4的新特征。它们是令人激动人心的。或许有人会说,AS3(ActionScript3)尚未学通,怎么AS4又要出了吗?AS4尚未出台。不过,AS语言是基于ECMAScript标准的,且比C#走得更前卫,所以,我想AS4出台是早晚的事。我预感到在08年下半年将可以见到AS4.技术更新太快了。近几日学习了一下ECMAScript4,给大家介绍一下。 ES4新特征介绍之一:关于类型声明 七,泛型 使用AS3的时候,你是否想过如果支持泛型与反射就更好了。的确这两种特征在面向对象编程中起着非同小可的作用。 class Hashtable.<K,V>{ var store : [ [K,V] ]; function fetch(k:K) : V ...{ var ix : uint = hash_func(k); //用一个函数取得其索引 while (store[ix][0] != k) ix = store[ix][1]; } } //这个哈希结构很常见了,以数字作索引,指向字符串 Hashtable.<uint,string> = new Hashtable.<uint,string>(); 如上这段代码便是ES4中的[类型化的参数],类似于C#中的泛型。其中用了数组类型声明,在之一中已经介绍。 八,反射 此块暂缺,稍后更新。 九,若干编程小方便 9.1 在AS3中someStr.slice(1,3)在ES4中可以用someStr[1,3],是不是更方便 9.2 字符串支持了索引访问,"sban"[1]等于b 9.3 可以包含没有escaped的字符,以下这句是合法的: """this string starts here it has a "blank" line before this one and ends here:""" 9.4 如C#一般,数字类型支持了格式,以下数字具有了单位意义: -7i, 1u, 37d, 14.5m 其中,i = int, u = uint, d = double, m = decimal 9.5 函数可以返回两个值 function getInfo():Array return ["sban", "BeiJing"]; ... var name,city; [name, city] = getInfo(); trace(name); trace(city); trace的结果是什么,"sban" 和 "Beijing"。Why? ES4不仅一个函数可以同时返回两个值,并且还可以同时给两个变量赋值。 9.6 单行函数 在9.5中,getInfo可能让人觉得有误,因为它没有{}。而这是充许的,函数充许在一行中定义而不使用它。 9.7 数组可以由表达式定义 这有点像lambda了。语法为:[expression for condition]。for之前为表达式,之后为条件。 function range(begin, end) for (let i = begin; i < end; ++i) { yield i; } var tenArray = [i*10+1 for (i in range(1, 10))]; 9.8 var 的局部定义替代者let 在9.7中出现了奇怪的let,它是干什么的? let用于变量的局部定义,它有点类似于c++的inline。 { let a = 10, b=20 ...{ let a = 20 trace(a+b) // 40 } trace(a) // 10 } 9.9 like运算符 用于比较两个对象的类型定义是否雷同或返回相似的类型声明。 var p : like {x : int, y : int}; if (p is like {x : int, y : int})... 9.10 &&= 与 | |= var1 = var1 || "default value"; 可以用var1 ||= "default value"; 9.11 可以重写运算符操作用户自定义类型(不可用于系统类型) generic intrinsic function + ( list: UserList, user: User ) ...{ list.push(user); return user; } // Usage: userList + user; 9.12 cast 用于类型转换 9.13 this关键字在当前函数中有效,可不再使用arguments.callee。 sban 于北京朝阳园 2008年2月17日
|
| 相关文章 |
| 发表评论 |
BK网络学院主要内容:平面设计教程,网站开发在线教程,网页制作教程,服务器教程,网络编程,数据库教程等。产业部:沪ICP备05019380号 陇ICP备05004709号 公安局:GR6201030003 Copyright © BK设计 Powered by BK网络学院 |