データ型の必然性について

このQ&Aのポイント
  • Flashではデータ型を指定する必要がなく便利だが、指定することでプロの人が使いやすくなる
  • データ型の指定による影響はないが、ソースコードの可読性を向上させるために使用される
  • データ型の必然性に疑問を感じるが、誤った使い方を防ぐために指定される場合もある
回答を見る
  • ベストアンサー

データ型の必然性について

Flashに限らない話かもしれませんが、Flashでは変数にデータ型を指定する「必然性」がありません。例えばJAVAでは変数に必ずデータ型を指定する必要がありますが、Flashは指定しなくても可です。他に例を挙げれば、Perlも同じくデータ型を指定する必然性はありませんが、文字列と数値の区別はデフォルトでされています。等価式を書く際、数値の等価は==、文字列の等価はeqと書くように。しかしFlashは数字も文字列も==が使えます。この点、Flashは区別が無くて使いやすいというべきか、いいかげんというべきなのか・・・。 本題ですが、先述したとおりFlashではデータ型を指定する必然性がありません。にも関わらず「var i:Number;」のようにデータ型を指定したスクリプトを書いている人を特にプロの方でよく見かけます。あとは返り値の無いfunctionで「function aaaa():Void {」など。これらは何のためにわざわざ指定されているのでしょうか?誤った使い方をされないためですか? 同じ理由でvarの必然性にも疑問を感じます。あってもなくても動作に影響は全くなし。ただ、これは書いてくとソースが見やすくなるので、視覚的利便性の目的で使うことにしています。

  • Flash
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.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 } でコンパイルエラー(戻り値を返しているから)となります。 つまり質問者さんが言うように誤った使い方をされないためだと私は思います。

関連するQ&A

  • jQuery内、文字列データを外部に渡したい。

    試行錯誤して、悩んだ上で質問させていただきます。 一番の目的としては、 外部phpと通信した結果の文字列を変数に格納して、比較処理がしたいのです。 しかし、jQuery内部からreturnで値を返しても、うまくいかないため無理やりにでもと グローバルオブジェクトを使ってみることにしたのです。 しかし、うまくいきません。 おそらくjavascriptでの大域変数はページがロードされると返却される(?)事が原因だと 睨んでいるのですが・・・ どなたか、よい方法をご存知ではないでしょうか? 回答をお待ちしています。 /**********************以下 ソースコード***************/ //Responseオブジェクト作成 function Response(res){ this.res = res; return this; } //オブジェクト関数定義 Response.prototype.ref = function(ref){ this.res = ref; } //オブジェクト生成 var db = new Response(""); //do_db.phpと通信し,返ってきた文字列(data)をオブジェクト内に格納したい function refDB(string,i){ jQuery.get("do_db.php", { "CH":string }, function(data){ db.ref(String(data)); //alert(db.res); ここでは値が入っている(文字列のデータをalert表示できる) } ); //alert(db.res); ここでは値が初期化されてしまっている(alert表示) } /*************end******************/

  • PHPの変数で最初から2行分の文字列を取得したい

    phpで変数に格納されたデータの最初の2行分の文字列だけを取り出す方法を教えてください。 例)複数行のデータ(\n区切り) aaaa bbbb cccc dddd 上記のデータが変数$valueに格納されています。 $valueに格納されたaaaa~bbbbまでを取得するにはどうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • Flashにデータを呼び込む

    MySQLデータをFlashに呼び込む作業でどうしてもうまく行かなくて困っています。アクションスクリプトバージョンが2.0です。 dog.php というphpファイルで作って、MySQLデータを読み出すところまで成功しました。実際に、http://www.XXXXXX.com/dog.phpをブラウザで打つと 該当のデータが表示されます。 次に、下記のようにFlashにアクションスクリプトを書いてデータをFlashで表示させようとしていますが、、、なかなかうまく行きません。どこが間違っていますか?(なにも表示されません。) var theXML:XML = new XML(); theXML.ignoreWhite = true; theXML.onLoad = function() { var nodes = this.firstChild.childNodes; for(i=0; i<nodes.length; i++) { doglist.addItem(nodes[i].firstChild.nodeValue,i); } } theXML.load("http://www.XXXXXX.com/dog.php"); (ここで、doglistはコンポネットリストの変数です。) もし、このほかもっといい方法がありましたら、ご教授よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • SharedObjectに変数を格納したいのですが、、

    最近Flashの勉強を始めたばかりで、この件についてどう調べても分からないので教えていただけませんでしょうか。 SharedObjectに、数値や文字列を保存することはできるのですが、 変数をそのまま保存する方法はありますでしょうか。 XMLからデータを読み込み ⇒ 読み込んだデータをSharedObjectに保存 ⇒ SharedObjectから呼び出して利用 という流れを作りたいと考えています。 具体的には、XMLから読み込んだデータを変数Aに格納して、変数AをSharedObjectに保存しようとしているところがうまく行かず、困っています。。 良い方法がありましたらご教授ください。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • そのまま文字列にしたい

    var data= { "名前" : "山田太郎", "年齢" : "16歳" } スクリプト内で上記のように定義している状態なのですが、変数をそのまま文字列にして、結果として下記のように変数に格納したいと思っています。 var string = 'var data={\n"名前" : "山田太郎",\n"年齢" : "16歳"\n}'; 実際にはAIRを利用してjson形式でデータを読み書きしようとしているのですが、文字列への変換の仕方がわからないため質問しました。よろしくお願いします。

  • クラス、メソッド、プロパティ、変数などの意味は?

    いろんなサイトやネットでいろいろ調べたのですが、 よく分かりませんでした。自分なりに考えたことですが、 (1)~(6)の用語の内容とコード上での色付けは正しいでしょうか? (1)クラス(緑枠) コンストラクタ、メソッド、プロパティを一括りにまとめたパッケージのこと。 つまり、functionの【{】と【}】の間にあるもの。 (2)オブジェクト(青枠) 関数。すなわち「複数の物や動作を入れる物」。 つまりfunctionで始まるものをオブジェクトと呼ぶ。 (3)コンストラクタ(= クラス名または関数名)(紫枠) 「構築子」のこと。オブジェクトを作る名前の部分。 つまりfunction直後に付ける関数名(クラス名)をコンストラクタと呼ぶ。 (4)プロパティ(赤枠) 「特徴」のこと。 つまりfunction内で指定された変数(var b)をプロパティと呼ぶ。 function a(){var b;}; (5)メソッド(水色枠) 「動作」のこと。 つまりオブジェクト(functionで始まるもの)が 変数(var b)に指定された場合はメソッドと呼ぶ。 var b = function a(){}; (6)変数(灰色枠) function外で指定された変数(var b)は、変数と呼ぶ。 function a(){}; var b;

  • エクセルで文字列(数値)から任意の文字の数を数えたい。

    エクセルで数値(もしくは文字列)から任意の数値の数(もしくは文字の数)をカウントする方法を教えてください。例えば11111001という数値で1の数をカウントしたいということです。この場合6という返り値が欲しいと言うことになります。よろしくお願いします。

  • 変数名を変数で指定するのに$_POST[

    http://oshiete1.goo.ne.jp/qa2691790.html の#1さんに,変数名を変数で指定できることを教わりました. 下記の3行目のように,です. for ($i=1;$i<=5;++$i){ if (${"var".$i}=="") { ${"errMsg".$i}=$i."が未入力"; } } ここで, (1) $_POST["form"] には「str」という文字列が入っています. (2) $Var には「10」という数値が入っています. (3) これらを結合し, どうしても $_POST["str10"] みたいな変数を作らなければならないのですが, ・<? echo $_POST["str" . $Var]; ?>では何も起こらず. ・<? echo $_POST[{"str" . $Var}]; ?>などと{}で括っても, Parse error: parse error, unexpected '{', expecting ']' in C:\temp.php on line 10. みたいなエラーになります. どういうのが正しい書き方でしょうか?

    • 締切済み
    • PHP
  • Javascript+PHPで変数を受け渡したい

    PHP変数の文字列データを、 <a href ="Javascript:xxx($data)">として、関数を実行させたときに、関数側での function xxx(data){ --データで指定されたhtmlへ移動したい } という方法は、実現できないのでしょうか。 Javascriptのエラーでデータの受け渡しができていないみたいなのですが、わかる方教えてください。

  • AS3 Flash 変数の扱い方について

    質問なんですが、外部テキストをロードして完了したら イベントハンドラで数値の5を取得し、 それを別の変数に代入して保持させようと思い、 外部ASファイルのカスタムクラスのプロパティに代入したんですが上手く行きませんでした。 なのでどのようにしたら良いのか教えて頂けませんか? プログラムは以下になります。ではよろしくお願いします。 ***ASファイル*** package{ public class ImageRoadClass{ public static var number:int; // 返り値保持 private var number2:int; // 返り値保持 function ImageRoadClass(){ } public function setNumber(number:int):void{ this.number2 = number; } public function getNumber():int{ return this.number2; } } } ***flaファイル*** // インスタンス生成 var imageRoad:ImageRoadClass = new ImageRoadClass();        ・ (割愛)  ・        ・ // ロード完了後のイベントハンドラ function jsonReadHandler(e:Event):void{ var json_data:String = URLLoader(e.currentTarget).data; // 読み込んだテキストをjsonオブジェクトにデコード var json_decode_data:Object = JSON.parse(json_data);       // ***ここで値を外部クラスのプロパティに代入*** ImageRoadClass.number = json_decode_data[0].number; imageRoad.setNumber(json_decode_data[0].number); trace(ImageRoadClass.number); // 出力結果:5 trace(imageRoad.getNumber()); // 出力結果:5 } trace(ImageRoadClass.number); // 出力結果:0  保持できてない trace(imageRoad.getNumber()); // 出力結果:0  保持できてない

    • ベストアンサー
    • Flash

専門家に質問してみよう