dポイントプレゼントキャンペーン実施中!

Flashに限らない話かもしれませんが、Flashでは変数にデータ型を指定する「必然性」がありません。例えばJAVAでは変数に必ずデータ型を指定する必要がありますが、Flashは指定しなくても可です。他に例を挙げれば、Perlも同じくデータ型を指定する必然性はありませんが、文字列と数値の区別はデフォルトでされています。等価式を書く際、数値の等価は==、文字列の等価はeqと書くように。しかしFlashは数字も文字列も==が使えます。この点、Flashは区別が無くて使いやすいというべきか、いいかげんというべきなのか・・・。

本題ですが、先述したとおりFlashではデータ型を指定する必然性がありません。にも関わらず「var i:Number;」のようにデータ型を指定したスクリプトを書いている人を特にプロの方でよく見かけます。あとは返り値の無いfunctionで「function aaaa():Void {」など。これらは何のためにわざわざ指定されているのでしょうか?誤った使い方をされないためですか?

同じ理由でvarの必然性にも疑問を感じます。あってもなくても動作に影響は全くなし。ただ、これは書いてくとソースが見やすくなるので、視覚的利便性の目的で使うことにしています。

A 回答 (1件)

質問の前半部分の変数宣言の必然性などは私にもわかりませんが、



var i:Number;
という記述は厳密な型指定といわれるもので、
1.誤った型が入ったときコンパイルエラーとなる
2.コードヒントが表示される
等の利点があります。

1.誤った型が入ったときコンパイルエラーとなる
var i:Number;
var s:String;
と宣言して置いて
i = "12"
と記述するとコンパイルエラーとなります。
これは数値型に文字型を代入したためです。
同様に
s = 1
もエラーとなります。
これらがコンパイルエラーとなることで、変数に謝った型が入るのを防ぐことが出来ます。
また
trace(s.hoge)
と存在しないプロパティを記述してもコンパイルエラーとなります

この厳密な型指定はvarで宣言しなければ使用できません

2.コードヒントが表示される
var s:String
と記述した後、
sに続いて.(ピリオド )を入力した時点で
使用できるメソッドとプロパティの一覧が表示されます。これ結構便利ですよね。

またコードヒントは接尾辞をつけたり(String型の場合はhoge_strと_strをつける)、
//String moji;
とコメントを入れることでも使用できます
(//MovieClip this;でthisのコードヒントが出せるので便利)

関数も同様に
function s():String {
return 2;
}
でコンパイルエラー(戻り値が文字型ではない)

function v():Void{
return 1
}
でコンパイルエラー(戻り値を返しているから)となります。

つまり質問者さんが言うように誤った使い方をされないためだと私は思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!