JavaScript、ActionScript 3.0、Cの変数や関数の宣言方法
少し間が空いてしまいました><
JavaScripterがCを始めた。の続きです。
型指定の文法に着目して、JS・AS3.0・Cの変数宣言(+初期化)を見比べてみる。
まず、JavaScriptから。
var x; x = 100; var y = 1.23;
var文によって、整数だろうが、浮動小数点付きの実数だろうが(オブジェクトだろうが)、お構いなしに代入できる変数が宣言されています。
ブラウザ上で実行される場合、これらの変数の実体は、windowで参照されるグローバルオブジェクトのプロパティです。
次、ActionScript 3.0。
var x:int; x = 100; var y:Number = 1.23;
JavaScriptに似ていますが、変数の後に型注釈がついています。
これによって、数値であるはずの変数が知らないうちに文字列になっていたり…ということが無くなります。
そして、C。
int x; x = 100; double y = 1.23;
こうしてみると、AS3.0よりシンプルですね。
AS3.0で変数の後に付いていた型注釈が前に出てきて、それがそのまま変数宣言となっています。
同じく、JS・AS3.0・Cの関数定義を見比べてみる。
それぞれ受け取った引数(整数)を3で割った数を返すシンプルな関数を定義してみます。
まず、JavaScriptから。
function f(z) { return z / 3; }
function文によって、仮引数がzの関数fを定義していますが、zが整数であるべきということは仮引数の部分では制限できません。
zは整数でない数かも知れないし、文字列である可能性さえあります。
実数である場合はそのまま計算して返しますし、他の型である場合は自動的に型変換して計算後、値を返します。
返す値についても制限できません。
例えば、文字列を受け取った場合、除算をする段階で数値に型変換します。
変換結果が数値として有効なものでない場合にはNaNとなり、結局NaNを3で割った結果NaNが返ることになります。
次、ActionScript 3.0。
function f(z:int):Number { return z / 3; }
変数の場合と同じように、JavaScriptの関数定義に、型注釈が付いた形です。
これによって、整数でない値が渡されそうになった時点できちんとエラーとして処理されます。
注意すべきは、仮引数の型名(int)だけでなく、「戻り値の型名」(Number)についても記述出来る(する必要がある)ことです。
自分がAS3.0を始めた頃は、この点で躓きました。
そして、C。
double f(int z) { return z / 3; }
これまたシンプルです。
仮引数の部分は変数の場合と同様、型名が前に出てきています。
さらに、AS3.0では関数本体のブロックの直前("{"の前)にあった「戻り値の型名」も、先頭に来ていますね。
まとめ
Cって、シンプル!!
とりあえず、今回は記法の段階で躓く事はなさそうです。><