ActionScript理解度テスト【その1解答編】Code Comprehension(1/2 ページ)

各プログラミング言語に精通した方の監修の下、それぞれの言語に関する知識や認識についての、習熟度や理解度を確認するためのテストをお届けする「Code Comprehension」。第1回の解答です。

» 2008年05月13日 14時17分 公開
[新藤愛大,ITmedia]

 こんにちは。BeInteractive!のyossyです。Code Comprehension Testの1発目としてお届けした、ActionScript理解度テスト【その1】はいかがでしたでしょうか。さっそく解答編をお届けしたいと思います。

問1.プリインクリメント・ポストインクリメント

var a:uint = 0;

trace(a++);

var b:uint = 0;

trace(++b);


出力

0

1


 これはプログラミングの初歩ですね。a++の場合は加算前の値が、++aの場合は加算後の値が返ります。

問2.配列参照

var list:Array = [1,2,3,4,5];

var copy:Array = list;

copy[0] = 6;

trace(list);

trace(copy);


出力

6,2,3,4,5

6,2,3,4,5


 初心者の人がよく間違う、配列のコピー「したつもり」コードです。配列を代入する場合、参照が代入されるので、それをいじると元の配列が変更されます。

問3.メソッド参照

var o:Object = new Object();

o.a = 1;

o.f = function():void

{

    trace(this.a);

}


var f:Function = o.f;

f();


出力

undefined


 一見、単にo.fを呼び出しているだけに見えますが、そうではありません。この場合、thisにoは渡されないので、o上のプロパティを参照することはできません。

f.apply(o);


などを使いましょう。

問4.論理演算

var a:String = 'hoge';

var b:String = 'fuga';

trace(a || b);

trace(a && b);


出力

hoge

fuga


 こちらの詳細については、「論理和演算子||(OR)二重のバグ」を参考にしてください。

問5.ショートカットオペレータ

function f():String { return 'f'; }

function f2():String { return 'f2'; }

var a:String;

var b:String;


if ((a = f()) || (b = f2())) {

    trace(a);

    trace(b);

}


出力

f

null


 論理演算で、最初の式が成り立っていれば次が実行されないという、Perlでよく使われているものですね。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ