<< Erlang 〜第2回〜 基本仕様編 | main | ワークシェアリング >>

スポンサーサイト

一定期間更新がないため広告を表示しています


  • 2010.11.01 Monday
  • -
  • -
  • -
  • -
  • by スポンサードリンク

Erlang 〜第3回〜 モジュール編

 本日は第3回目ということで、モジュールの解説に入っていきたいと思います。
関数型言語ということだけあって、Erlangには常に式という概念がありますので、
今まで記述してきた内容についても、式であったわけです。

今回は、Erlangの中でモジュール(メソッド)を利用する方法を説明したいと思います。
また、今回からソースファイルは基本的にコンパイルして利用する方法をとります。
コンパイル対象のファイルは、拡張子をerlとしてテキストエディタ等で作成を行います。

また、コンパイルの方法は以下のように記述します。

1> c(ファイル名).
{ok, ファイル名
※ファイル名には拡張子を含めても含めなくても問題ありません。

成功した場合は上記のようなメッセージ{ok, ファイル名}が表示されます。

また、コンパイルするファイルは任意のフォルダに保存しておいて、
保存したフォルダまでパスを移動させた後で上記コマンドを実行します。

■移動方法
1> cd("フォルダパス").
フォルダパス
ok

移動完了後のパスが実行結果に表示されます。
(※間違ったパスを指定しても、コマンドを実行したときのパスの場所に居続けます)

■現在のパスを調べる
また、現在のパスを調べたい場合は、pwd().コマンドで調べます。
(このあたりまでは、UNIX系のコマンドと同様です)

1> pwd().
現在のパス
ok


長くなってしまいましたが、ここから本日の本題です。
まず、以下のようなコードを任意のファイル名(ここではhoge.eal)で保存します。

[ファイル中身]
-module(hoge).
-export([sum/1]).
sum({X,Y}) -> X + Y.

保存が完了したら、コンパイルをして実行内容を確認します。

1> c(hoge).
{ok,hoge}
2> hoge:sum({10,20}).
30

ここで2行目に入力した方法でモジュールにアクセスします。

Javaやその他の多くのオブジェクト指向言語では、.(ピリオド)でアクセスしますが、
erlangでは、:(コロン)を用いてアクセスをしていることがわかると思います。

このあたりは慣れなので、最初は違和感があるかもしれませんが、
いずれ慣れてくると思います。

このモジュールを拡張してみたいと思います。
-module(hoge).
-export([sum/1]).
sum({X,Y}) -> X + Y;
sum({X,Y,Z}) -> X + Y + Z.

これで拡張完了です。3つの配列をすべて加算した値を返してくれるメソッドの作成完了です。

上記のようにリストの数によって加算数を変更しなくてはいけないのは面倒です。
こういった場合は、以下のように変更すれば、リストの数がどれだけあっても計算をしてくれます。

-module(hoge).
-export([sum/1]).
sum([H|T]) -> H + sum(T);
sum([]) -> 0.

このコードはリストのヘッドを取り出し、テールと加算します。
リストは空になった時点で0を返しますので、リストの数まで加算を続けて結果をかえしてくれます。
(この考え方は慣れるまで非常に難しいです。)

1> c(hoge).
{ok,hoge}
2> L = [1,2,3,4,5].
[1,2,3,4,5]
3>hoge:sum(L).
15

モジュールの基本的な考え方は以上です。
次回は、funという無名関数について説明したいと思います。


スポンサーサイト


  • 2010.11.01 Monday
  • -
  • 16:26
  • -
  • -
  • -
  • by スポンサードリンク

コメント
コメントする









この記事のトラックバックURL
トラックバック
関連会社
株式会社ツクル
誠意と創意で技術を社会に活かすIT企業
          
          
時計
calendar
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>
Amazon
selected entries
categories
archives
recent comment
recommend
links
profile
search this site.
sponsored links
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM
2008JUGEMキャラコングランプリ
キャラクターデザイン:磯崎洋助/「おしゃれひつじ」