ActionScript理解度テストを解いてみた
- BeInteractive! [ActionScript理解度テスト]
ActionScript初心者ですが解いてみました。
まだ解いてない人にいきなりネタバレしないようにまずは僕の採点結果から:
1:
○
○
2:
○
○
3:
○
4:
○
○
5:
○
○
6:
○
○
7:
○
×
8:
○
9:
○
○
10:
○
○
11:
×
12:
×
13:
×
○
14:
○
○
○
×
×
15:
○
16:
○
17:
×
18:
○
19:
×
20:
×
部分点なし(完全に正解しないと0点)の計算で20問中12問正解、60点。
Pythonの知識はActionScriptにも多少は役に立つことが判明しましたw
以下、解きながら書いた感想と、採点してみての感想。
1
後置インクリメントはインクリメント前の値を返します、というC言語の知識。
[正解]
2
代入はコピーではないケース。基礎知識。
[正解]
3
むむ?Pythonistaとして素直に考えるとf = o.fはインスタンスにバインド済みのメソッドオブジェクトがfに入るんだが、ActionScriptでFunction型に代入しているんだな…。バインドされているインスタンスの情報が失われるのかな。
[正解]
5
これもショートサーキット演算子。b = f2()が評価されない。
[正解]
6
これは参照渡しか値渡しか、混乱する言い方が好きなら「参照の値渡し」だ、とかそういう話。
[正解]
7
ブロックがスコープを作るかどうかという話。知らない。
でもスコープが作られない場合は変数の重複定義でコンパイルエラーになる気がする。
[不正解]
ECMAScriptのブロックには新しいスコープを生成する機能はありません。
そうなのか。試してみたところ、ブロックの中と外で宣言する変数の型が違うとコンパイルエラーになるけど、同じならならないことがわかった。なるほど。
8
インスタンスの属性に対する代入がプロトタイプに書き込まれるのかそうじゃないのか、という問い。書き込まれるわけない。
[正解]
9
変数名の解決のしかたがレキシカルなのか何なのか、という話。レキシカルだと思う。レキシカルならbは1だ、という理解で正しいかな。
[正解]
10
var宣言していない場合にグローバル空間を汚染するのかどうか。汚染するので要注意。JavaScriptで覚えた。
[正解]
11
何も難しくない。
[不正解orz]
ECMAScriptでは、ブロック内での関数の定義は許されていません。そのため、関数は無いものとして扱われます。
むむぅ。そうなのか。
12
何も難しくない。あ、関数をこんな所で作るのになれていない人向けか。
[不正解(吐血]
無名関数をその場で呼び出すことは出来ません。
http://f-site.org/articles/2004/08/23074843.html
JavaScriptでは、問題なく動作するようです。
むぅ。
13
むむ。これはa = 4, 5, 6がPythonならa = (4, 5, 6)というタプルだと解釈されるところだけど、EcmaScriptにタプルがあったような気がしない。これはただの無意味な括弧で、実際はtraceに可変長引数で渡しているんじゃないか?
[不正解]
カンマ演算子というものらしい。「456」と表示されると思ったが「6」しか表示されない。
14
これはさすがにわからない。最後はString(undefined)がundefinedになりそうだとは思う。
nullがあるのを今知った。String(null)は"null"になるんだろうか。空文字列になるんだろうか。
そもそも最後のString(undefined)がundefinedになるとして、"undefined" == undefinedはfalseになるのかundefinedになるのかどっちだろう?
はっ、まさかnullは無くて、undefinedになるという引っかけか?15番みてそう思った。
[不正解]
最後の2つだけtrueでない、というのはあっていたけどnullは存在するし、undefinedとの比較演算もundefinedにならない。
15
これは普通に考えてfalseじゃないのか?Trueがundefinedで。
[正解]
16
えーと…。-1なのかな?
[正解]
微妙。EcmaScriptに長整数があるのかどうかがそもそもわからなかった。
17
うわぁ。これを問題に出すと言うことは、一意に決まるってことだよな。僕はとても素直なので「コンストラクタでbに代入したりしているのが壮大な釣りで、正解はabc順」という可能性は考えないことにして、っとなるとわざわざ代入していると言うことは代入によって順番が変化すると言うことなんだろう。となると最後に代入されたものが一番前に来るんだな。
いや、最後に参照されたものも前に来るのかも??むむ?
[不正解]
そうか、インスタンスが持っているかプロトタイプが持っているかを問う問題だったか…。
18
クラスメンバの初期化のタイミングが、クラス定義時かインスタンス作成時か、という問題。staticがついてないからインスタンス作成時じゃないのかな?と思うけど、わざわざ問題にしているところが怪しい。
[正解]
気をつけよう。
19
あれ?なにこれ?
素直に考えると素直なんだが…。
わざわざ問題になっているということはstartあたりが特殊なメソッドで、
インスタンス作成後に勝手に呼ばれるとか??
[不正解]
20
素直に考えると最初の方の問題と同じだよねぇ。
[不正解]