「覚え間違い」を教えてください!

enum?hash?dictionary?
何がなんだかよく分からないです。
アホな質問ですみませんが、ご回答よろしくお願いします。

質問者からの補足コメント

  • 言語は特に限定していないのですが、言語によって呼び方が異なるということでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/06/07 10:47

A 回答 (4件)

言語によって呼び方や動作仕様に違いがあります。


なので、大抵はこんな風に扱われている、という例になります。

○列挙型:
数値や文字列の代りに「名前」を使えるようにした型。
使える「名前」を「列挙」してある。
一連の「定数」を1つにまとめて扱える。
解りやすい名前にすることと、受け付ける値/型を限定することで、プログラムの間違いを減らす等の効果がある。

例えば
曜日型: 月,火,水,木,金,土,日
曜日型変数: WeekDay
とすると
WeekDay = 日
# WeekDay=7 はNG
# WeekDay="日" はNG。文字列ではない。

d = getDay(日) #引数に曜日型を取る関数
# d = getDay(7) とは別の扱い。言語によって
# ・NGになる
# ・オーバーロードで getDay(整数) で定義した方が呼ばれる 等


○連想配列:
通常の配列は、添字として整数を使うが、それを整数以外でも使えるようにしたもの。
A[10]=3.5 # 通常の配列 添字は整数
D["質問番号"]=3333 # 連想配列では、添字に整数以外のもの(文字列等)が使える

「見出し語」と「内容」という関係から 「辞書(dictionary)」型
「値」と「値」の写像(map)になることから「マップ」型
実装としてハッシュテーブルを使う(あるいは、使っていた)ことから「ハッシュ」型
 (または、Perlで連想配列をハッシュと呼んだこと「ハッシュ」型)


○列挙型と連想配列の関係
基本的にはありません。
連想配列のキーとして、列挙型が利用できる場合があります。
    • good
    • 2
この回答へのお礼

詳細なご回答により理解が深まりました。
ご回答ありがとうございました。

お礼日時:2015/06/08 22:38

列挙型は列挙するだけで数値を+1して定義する定数値


enum {
a = 1,
b,c,d,e,f
}
であれば
a => 1
b => 2
c => 3
d => 4
e => 5
f => 6
とぞろぞろつながって定義されます。

連想配列は配列としてインデックスを文字列で表現が可能なarrayの事です。PHPなどが有名です。
var['a'] = 1;
var['b'] = 2;

列挙型と連想配列の違いといわれましても、数値を扱うものとしては同じですが、列挙型は定数、連想配列は変数ですとしか言いようがないですね。
    • good
    • 1
この回答へのお礼

>列挙型と連想配列の違いといわれましても、列挙型は定数、連想配列は変数ですとしか言いようがないですね。
ですよね^^;失礼いたしました。
丁寧なご回答ありがとうございました。

お礼日時:2015/06/08 22:43

使い方は似たような物です。



使い分けとしては、
列挙型は、定数に名前を付ける場合に便利。
連想配列は、値に名前を付ける場合に便利。
    • good
    • 0
この回答へのお礼

簡潔なご回答ありがとうございます。
なるほど!と思いました。

お礼日時:2015/06/08 22:39

質問されている言語は何でしょうか?

この回答への補足あり
    • good
    • 1

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


おすすめ情報