Erlang World


top > data type > atom

Atom

アトム

この節ではアトム(atom)について学びます。 アトムとは、Erlangにおける不変定数です。

簡単に言うのなら、「識別のために用いる記号」のようなものであると言えるでしょう。
アトムは小文字英語から始まり、英数字が続きます。
実際に確認してみましょう。

1> apple.
apple
2> hello_world.      
hello_world		

アトムはただの記号ですから、それ自体に意味はありません。 様々なものと組み合わせて使う必要があります。
当然のことながら、アトムを変数に代入することも可能です。

3> Atom = atom.
atom
4> Atom = apple.
** exception error: no match of right hand side value apple
5> Atom = atom.
atom

特殊なアトムである論理型(ブーリアン型)

Erlangにおいて、アトム true とアトム false は特別な意味を持ち、 この2つは論理型として働きます。

論理型は、真(true)と偽(false)の2種類の値だけを扱う型です。これはおもに条件演算で利用されます。

他の言語における true と false の感覚で利用しても大丈夫です。

その他、知っておくべきこと

アトムは大域的に有効です。
分散プログラミングを行う際に、あるノードにappleというアトムがあるとすると、 それは別のノードにあるappleというアトムと同一のものだということです。
これは、どのノードの「10」も扱いは同じであることと同じです。

また、小文字以外の文字から始まるアトムは「 ' 」で囲んであげることによってアトムとして扱われます。

6> Apple.
* 1: variable 'Apple' is unbound
7> 'Apple'.
'Apple'

先頭が大文字から始まる場合は、何もつけないとそれは変数として扱われてしまいます。 今回は束縛されていない変数「Apple」を評価しようとしたためエラーが発生しています。
それに対して、引用符「 ' 」で囲んであげたAppleはアトムとして扱われているのでエラーは発生していませんね。

BIF

is_atom(Term) -> bool()
Term = term()
Termがアトムならtrueを返す。 違うならfalseを返す。
1> is_atom(apple).
true
2> is_atom("hello").
false
is_boolean(Term) -> bool()
Term = term()
Termが true もしくは false であればtrueを返す。そうでなければfalseを返す。
> is_boolean(false).
true

> is_boolean(apple).
false
atom_to_list(Atom) -> string()
Atom = atom()
アトムAtomをリストに変換する。
3> atom_to_list(hello). 
"hello"
list_to_atom(String) -> atom()
String = string()
リストListをアトムに変換する。
> list_to_atom("apple").
apple

Yuichi ITO. All rights reserved.
mail to : ad
inserted by FC2 system