Erlang World


top > first step > valiable

Valiable in Erlang

Erlangにおける変数

この節ではErlangの変数について学びます。
手続き型言語と大きく違うので、飛ばさずに最後までしっかりと読むことをお勧めします。

まずは例を通して見てみましょう。

1> Num = 5 + 8.
13

上の式の中にある「Num」はErlangの変数です。 Erlangにおいては 変数は大文字 で表されます。
ためしに、小文字に代入してみましょう。

2> num = 3 + 4.
** exception error: no match of right hand side value 7

エラーとなってしまいますね。小文字は変数として使えないということです。

Erlangにおいては、変数は大文字。
それ以外は小文字から始める。

と覚えておくのがいいと思います。
変数名以外の要素を大文字から始めることは可能ですが、誤用しないためにも明確な意図がない限りは避けて下さい。
変数名を大文字で始めるということは、他言語の経験者には慣れないことだと思いますので十分に注意して下さい。

単一代入変数

変数を大文字から始めるというルールは非常に重要ですが、文法上は他の言語と大きな違いはありません。 それよりも重要なのは、「Erlangの変数は単一代入変数である」ということです。
単一代入変数を簡単に言うと、「 値を代入することが一回しか出来ない変数 」と言えます。

詳しい説明の前に、どのようなものか試してみましょう。

3> f().
ok
4> Num = 5. 
5
5> Num = 3.
** exception error: no match of right hand side value 3
関数f() は変数を忘れさせる関数です。
この関数を使うことによって、1行目で使われた変数 Num を無かったことにしています。

実際に例を見ていきます。
さて、まず変数 Num に 5 を代入しているのは分かると思います。
奇妙なのがその次で、Num に 3 を代入しようとしたらエラーが出ていますね。
exception error: no match of right hand side value 3
エラーを見てみると、どうやら「式の左辺と右辺が一致しません」と言っているようです。

すでに代入されているものに値をもう一度代入するとエラーになるというのが分かって頂けたでしょうか。

今後のためにも、用語を定義しておきます。
既に値が代入されている変数のことを「束縛済み変数
まだ値が代入されていない変数のことを「未束縛変数」と呼びます。

また、前の節でも取り扱いましたが、 Erlangの未束縛変数には型がありません。代入された際に型が自動的に決まります。
上の場合だと数(整数)に型が決定しています。


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