ActionScript理解度テスト【その1解答編】:Code Comprehension(2/2 ページ)
各プログラミング言語に精通した方の監修の下、それぞれの言語に関する知識や認識についての、習熟度や理解度を確認するためのテストをお届けする「Code Comprehension」。第1回の解答です。
問6.参照渡し
function f(a:uint, b:Object):void
{
a = 1;
b.n = 2;
}
var n:uint = 0;
var o:Object = new Object();
o.n = 0;
f(n, o);
trace(n);
trace(o.n);
出力
0
2
プリミティブ型(数値など)は値渡し、複合型(オブジェクトなど)は参照渡しされます。値渡しされた変数をいじっても元の変数は変化しませんが、参照渡しされた変数をいじると元の変数にも反映されます。
問7.ECMAScriptにおけるブロック
var a:uint = 1;
{
var a:uint = 2;
trace(a);
}
trace(a);
出力
2
2
他言語に慣れている人にとっては予期しない結果かもしれませんが、ECMAScriptのブロックには新しいスコープを生成する機能はありません。
問8.デフォルト値
var a:Number;
var b:int;
var c:uint;
var d:Boolean;
var e:Object;
trace(a);
trace(b);
trace(c);
trace(d);
trace(e);
出力
NaN
0
0
false
null
それぞれの型のデフォルト値です。同じ数値型でも、Numberとint/uintではデフォルト値が違います。
問9.クロージャ
function f(g:Function):void
{
var b:uint = 2;
g();
}
var a:uint = 0;
var b:uint = 1;
f(function ():void
{
trace(a);
trace(b);
});
出力
0
1
ECMAScriptのクロージャは、「定義された位置に基づいて」決定されます。なので無名関数はグローバル上の変数しか参照できず、関数f内の変数bは参照できません。
問10.as演算子
var obj:Object = [1, 2, 3];
trace(obj as Array);
trace(obj as Number);
trace(obj as String);
出力
1,2,3
null
null
ActionScript3から導入されたas演算子は、キャストのための演算子です。通常のキャストとの違いは、キャスト不可能な型が与えられた場合、TypeErrorがスローされるのではなく、nullが返るところです。
関連キーワード
ActionScript | テスト | Code Comprehension | Flash | Adobe Systems(アドビシステムズ) | プログラミング | Open Screen Project
関連記事
- ActionScript理解度テスト【その1】
各プログラミング言語に精通した方の監修の下、それぞれの言語に関する知識や認識についての、習熟度や理解度を確認するためのテストをお届けする「Code Comprehension」。第1回は、BeInteractive!のyossy氏によるActionScript理解度テストだ。 - ActionScript理解度テスト【その2】
各プログラミング言語に精通した方の監修の下、それぞれの言語に関する知識や認識についての、習熟度や理解度を確認するためのテストをお届けする「Code Comprehension」。引き続き、ActionScript理解度テストをお届けしよう。 - 新藤愛大――欲望という幻想を現実に変えるActionScripter
ソフトウェアとハードウェアの両方に精通し、世の中を変革しようと牙を研ぐバイナリアンたちを紹介していく「New Generation Chronicle:バイナリアンスレッド」。第3回は、若くして国内のFlash/ActionScript界をけん引する新藤愛大氏に登場いただいた。 - Adobe、「Open Screen Project」でFlashをオープンに
Adobeは一貫したFlash実行環境を実現するため、SWF仕様の制限を廃し、APIやプロトコルを公開し、ライセンス料を撤廃する。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.