- ベストアンサー
ActionScriptのデータ型の大文字/小文字に関して
- ActionScriptで使用されるデータ型には、小文字で始まる型名と大文字で始まる型名が混在しています。統一感のなさを感じるかもしれませんが、これは値型と参照型を区別するために行われています。
- 値型は小文字で始まり、メモリ上の実際の値を直接格納します。例えば、int型は整数値を表し、String型は文字列を表します。一方、参照型は大文字で始まり、メモリ上のオブジェクトへの参照を格納します。
- このようなデータ型の区別は、プログラムの実行時にメモリの管理やオブジェクトの操作を効率的に行うために重要です。また、互換性の維持や他のプログラミング言語との連携も考慮されています。エイリアスの定義やデータ型の置き換えも可能ですが、基本的なデータ型の使い方に慣れることをおすすめします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 ActionScript は大文字で始まる型の名前を慣例にしているだけで、大文字/小文字で始めなければならない文法上の規定はありません。 型の名前は ActionScript 3.0 になっても規定が特に追加されておらず、それはつまり、文法の範囲内で自由に付けて構わないということです。 明確な規定がないのなら、新たに導入する型の名前を大文字始まりにする義務もありません。 自由に名前を付けていいのに、慣例に反して名前の統一感を欠いてでも、なぜ小文字だけの型の名前が導入されたのか。 型の名前の由来まではいちいち説明する必要がなく、その理由はおそらく Adobe のサイトにも Flash の仕様書にも書かれていないでしょう。 公表されていない以上、真相を知っているのは開発者だけですから、理由は推測するしかないと思います。 ActionScript はC言語系の文法や発想をいろいろと取り入れてきました。 ですから、今回、整数型を導入するにあたり、C言語系と同じ int の名前を採用したのではないかと推測できます。 また、符号なしの uint は大文字始まりにすると UInt になり、ActionScript には” UI ”で始まるクラスが多く紛らわしくなるから、といった理由もあるのかもしれません。 ちなみに、関数の戻り値がないことを表す void は、ActionScript 2.0 では大文字始まりで Void と書きますが、3.0 では小文字の void に変更されました。 このあたりからも、C言語系の表記に合わせようとしていることが窺われます。 型の他にも、ActionScript の名前には統一されていないところが多々あります。 例えば、メソッドの名前は小文字始まりを推奨しているのに、グローバル関数の中には大文字で始まる名前の関数もあります。 これは、互換性や使い勝手を考慮しながら、添削を繰り返して進歩してきた結果だと思います。 今回の件も、名前の統一感はさておき、C言語系の言語にある int 型を名前ごと取り入れた、それだけのことではないでしょうか。 どうしてそんなことをしたのかは現時点では見えてきませんが、今後、C言語系と同様にプリミティブ型は小文字で、といった規格を作っていくつもりなのかもしれません。
その他の回答 (1)
- DPE
- ベストアンサー率85% (666/776)
C言語とその流れを汲む言語( C++ ・ Java など)のデータ型には、単一の数値を持つ時にビット幅を選べる int や char といった言語の仕様で用意されている型と、構造体・クラスのようにプログラムで後から定義される型の、2種類の型があります。 後で定義する構造体やクラスの命名には特にルールがなく、小文字だけで付ける人もいれば、先頭を大文字にして自作の型だと明示したいという人もいます。 ですから、C言語系列のプログラムでは、仕様で定められている int ・ char などの小文字だけの名前と、大文字を使った型の名前が混在しているのが当たり前です。 一方 ActionScript では、型といえばクラスだけです。C言語系列の言語が持っているビット幅で型を分ける仕様は、ActionScript 3.0 になった今でもありません。 Flash に付いている ActionScript のクラスのほとんどは単語の頭文字を大文字にして命名されていますので、大文字で始まる型の名前を目にすることが多いと思います。 ActionScript 3.0 からは、Number 型よりも整数の処理が速い int 型が登場しました。 int は珍しく全て小文字で書く型で新しい規格のように見えますけれど、実は int という名前で追加された”クラス”であって、C言語系列の言語が仕様として最初から持っている int とは意味が少し異なります。 しかしそれでも、マシンのより深いところと関わって整数の処理を速くしようとする目的や、内部の特殊な処理により new 演算子を使わなくても var a:int = 5; このように作成することもできる点はC言語系列の int と同じです。 クラスなら、なぜ Integer とか Int クラスにしなかったのかは、開発者に訊かなければ分かりませんが。 おそらく、ActionScript 3.0 が C++ や Java を意識した設計で、int クラスの機能・概念もそれらに倣って作ったことから、C++ などの経験者が馴染みやすいように、C言語系列の言語の int と同じ名前を採用したのだと思います。
お礼
申し訳ありません。質問がやや言葉足らずだったみたいです。 例えば「int はプリミティブ型なので小文字である」などの理由であれば 設計者の趣味の問題として、充分に納得しうる範囲だったのですが、 経緯的に見てもここで命名を不統一にする理由が思いつかなかったため、 このように質問させていただいた次第です。 果たしてこれが馴染みやすいのかどうかを議論しても詮無いですが、 長じている方でも推測する以外に他ないという解釈でよろしいでしょうか? せめてエイリアスを用意するくらいの心配りがいただければ嬉しかったんですけどね^^;
お礼
重ねての回答ありがとうございます。 なるほど、そのような経緯があるのですね。 void型が以前はVoid型だったということでしたら、 そのような流れがあるというのも確かに感じ取れることですね。 完全に納得したかと言われればまだ少し疑問ですが、 過渡にあると考えることといたします。