开启左侧

AS3语言特性小测试

[复制链接]
etthink 发表于 2009-11-28 01:14:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
AS3是一门很强大的语言; 能力越大,责任越大(with great power comes great responsibility)
这个测试会考考你的AS3语法, OOP及AS3 dark side(如何翻译更恰当?)相关知识.
祝你成功.

测试开始:

1. 哪一个是正确的输出?
var a = true; trace(a?"a":"b");

a) a
b) b


2. 哪些能够通过编译?
a) trace(10.toString());
b) trace(/dfgr/.source);
c) trace(<xml><avcb/></xml>.toXMLString());
d) trace({a:12}.a.toString());
e) trace(true.toString());
f) trace([1,2,3].toString());


3. 哪一项是正确的输出?
var a = 10; trace((a=a*a,a/2));

a) 10
b) 5
c) 50
d) 100
e) 不能编译


4. 哪一项是正确的输出?
trace((var a=10*10,a/2));

a) 10
b) 5
c) 50
d) 100
e) 不能编译


5. 哪一项是正确的输出?
var f : Function;
trace((f = function(){return 10},f()/2));

a) 10
b) 5
c) 50
d) 100
e) 不能编译


6. 会发生什么情况?
trace(<hallo/*an OpenTag*/></ {(trace("CloseTag"), "hallo")}>.toXMLString())

a) 编译错误
b) 运行时错误
c) 输出 "CloseTag"
d) 输出 "CloseTag <hallo/>"


7. 哪些能通过编译?
a) package{class C1{function f1(){} function f1(i : int){}}}
b) package{class C1{function f1(){} static function f1(i : int){}}}
c) package{class C1{function f1(){} AS3 function f1(i : int){}}}


8. 哪一项构造方法是正确的?
a) package{public class C1{public function C1(){}}}
b) package{public class C1{function C1(){}}}
c) package{public class C1{internal function C1(){}}}
d) package{public class C1{private function C1(){}}}
e) package{public class C1{public function C1():C1{return this;}}}
f) package{public class C1{public function C1():void{}}}


9. 哪些能通过编译?
a) package{public class C1{public function C1(){super()}}}
b) package{public class C1{public function C1(){this()}}}
c) package{public class C1{public function foo(){super()}}}
d) package{public class C1{public static function foo(){this}}}
e) package{public class C1{public function foo(){super.foo()}}}


10. 哪些叙述是错误的?
a) 可以添加以default命名的包中的类(default是关键字/保留字), 例如:import default.ClassA;
b) 可以添加以default命名的子包中的类(default是关键字/保留字), 例如:import my.default.ClassA;
c) 可以添加以true命名的子包中的类(true是关键字/保留字), 例如:import my.true.ClassA;


11. 哪一项的顺序是正确的?
  • package
  • {
  • import Flash.display.Sprite;
  • trace("A");
  • public class Test extends Sprite{
  • trace("B");
  • function Test() {
  • trace("C");
  • }
  • trace("D");
  • }
  • trace("E");
  • }
  • trace("F");

复制代码
a) A,B,C,D,E,F
b) C,B,D,A,E,F
c) B,D,A,E,F,C


12. 哪些能通过编译?
a) package{public class C1{namespace ns1; namespace ns2; ns1
function foo(){} ns2 function foo(){} }}
b) package{public class C1{namespace ns1 = "ns"; namespace ns2 =
"ns"; ns1 function foo(){} ns2 function foo(){} }}
c) package{public class C1{namespace ns1; ns1 function foo(){}
public function foo(){} }}
d) package{public class C1{namespace ns1 = ""; ns1 function foo(){}
public function foo(){} }}


13. 哪一项是正确的输出?
trace(function(){return "hallo";}())

a) hallo
b) 不能编译
学教育技术,上教育技术论坛!http://www.etthink.com

精彩评论1

正序浏览
etthink 发表于 2009-11-28 01:15:15 | 显示全部楼层
1) 这个问题考点就是条件运算.语法相当简单, 条件?肯定:否定;
正确的条案是a).

2) AS3是严格面向对象的语言.这意味着没有基类型, 每一个表达式(expression)都是对象的实例.
所以要直接用"."操作符调用对象的方法.只有一个例外:数字.
正确的答案是b), c), d), e), f).

3) AS3中可以在括号内连接多个表达式并返回最后一个表达式的值.可以想象为内联匿名函数.所以
正确答案是 c)

4) 这个和问题3)的解决方法一样, 但括号内不允许声明
正确答案是 e)

5) 不允许在括号内声明, 但可以将匿名函数赋给某个变量.所以
b)是正确的

6) 这个问题中包含了括号及内联(inline)XML的使用. 内联XML支持松散语法(relaxative syntax), 可以在XML内部添加AS注释.
看起来很复杂, 但d)是正确的.


7) AS3是面向对象的语言,但却不支持方法重载.所以a)是错误的. b)和c)都是正确的.
因为b)并不是重载, 而是声明为静态方法.
c)能通过编译,因为f1是在不同的命名空间声明的.

8) AS3的构造方法必需是public的, 且无返回类型.所以c),d),e)都是错误的.
有趣的是b),尽管没有修饰符,但它是正确的.不是默认的internal, 而是public.

9) "super()"只能在构造方法中调用, "this()"在语法构成上毫无意义,"this"也不能放在静态方法中.
所以, 正确答案是a)和e)

10) 这是AS3中dark side(应该怎么翻译?), 正常来讲三个答案都应该是错的.但是, b)是正确的.所以
答案是a)和c)

11) 当类第一次加载到内存中时, 静态初始化程序代码会首先执行.
正确答案是c).


12) 由问题7)可知,AS3不支持方法重载, 但方法可以声明在不同的命名空间中.如果类中声明了某命名空间,
且没有关联URI而初始化, 包名, 类名及命名空间将会在运行时进行URI解析(resolved as URI at runtime).
所以a)是正确的, b)是错误的, 因为命名空间有着相同的URI, 方法也就在同一个命名空间中了.
有趣的是,没有指明命名空间的方法, 实际上是处于含有空URI的命名空间中, 所以c)是正确的, d)是错误的.
a) and c)是正确选项.


13) AS3中的方法是闭包方法,在声明后可以直接调用.所以a)是正确的.


概要:
这个测试只是涵盖了AS3的一小部分特性.如果你没有全部答对也不必灰心.
当然, 不推荐你像5,6,10那样写代码.代码应该简洁,可读!
希望你能享受解题的快乐


Maxim Zaks is lead programmer of FDT (Development Tool forFlash) at Powerflasher.
Michael Plank is FDT evangelist at Powerflasher

访问fdt.powerflasher.com以获得更多信息
学教育技术,上教育技术论坛!http://www.etthink.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


11关注

460粉丝

7794帖子

推荐阅读更多+
会员达人更多+
广告位

关注我们:教育技术人

官方微信

官方微博

教育技术热线:

13955453231

学教育技术,上教育技术论坛!

教育技术论坛征稿范围:教育技术应用案例、教程文章、优秀作品等。

Email:sf@etthink.com

Copyright   ©2007-2026  应用思考-教育技术论坛  Powered by©Discuz!  技术支持:且行资源    ( 皖ICP备10014945号-4 )