せっかくオブジェクト指向のプログラミング言語を使っているんだからクラスを作ってみましょう。
(ちなみに今回も何か表示が出るわけではないです。)
class FileLockDir def lock(lockdir) begin Dir.mkdir(lockdir) lockflag = true rescue Errno::EEXIST lockflag = false end return(lockflag) end def unlock(lockdir) begin Dir.rmdir(lockdir) lockflag = true rescue lockflag = false end return(lockflag) end end-- プログラム 終わり --
今回は前回のプログラムを元にクラスを作成しました。
クラスというのは関数のさらに高機能版と考えればいいでしょうか。
クラスと特徴としては中にメソッドというものを収めることができる。
違うクラスで同じ名前のメソッドを持つことができる。
初期化が必要である。
では解説をします。
1行目はFileLockDirというクラスを定義しています。
2行目はlockというメソッドを定義しています。その際にlockdirという変数を受け取ります。
3行目はディレクトリを作成できなかったときの例外を捕まえるためのbeginです。
4行目はlockdirを作成します。もしここで作成に失敗したら6行目に飛びます。
5行目は成功したことを示すためにlockflagにtrueを入れます。
6行目はディレクトリの作成に失敗したときの例外が起こった時にここに飛びます。
7行目は成功したことを示すためにlockflagにfalseを入れます。
8行目はbeginの終わりです。
9行目はlockflagという成功か失敗かを示した変数を帰り値にします。
10行目はlockメソッドの終わりを示しています。
12行目はunlockというメソッドを定義しています。その際にlockdirという変数を受け取ります。
13行目はディレクトリを作成できなかったときの例外を捕まえるためのbeginです。
14行目はlockdirを削除します。もしここで削除に失敗したら16行目に飛びます。
15行目は成功したことを示すためにlockflagにtrueを入れます。
16行目は削除に失敗したときの例外が起こった時にここに飛びます。
17行目は成功したことを示すためにlockflagにfalseを入れます。
18行目はbeginの終わりです。
19行目はlockflagという成功か失敗かを示した変数を帰り値にします。
20行目はlockメソッドの終わりを示しています。
21行目はFileLockDirクラスの終わりを示しています。
これは実際のプログラムの中に入れておいて関数のように呼び出して使います。
まずfilelock = FileLockDir.newをいうようにしてFileLockDirのクラスを初期化します。
これでFileLockDirを使うための準備ができました。
filelockはFileLockDirクラスを呼び出すための変数になります。
LOCKFILEというディレクトリでロックをかけたい場合はfilelock.lock(LOCKFILE)とします。
帰り値がtrueなら成功、falseなら失敗なので
if filelock.lock(LOCKFILE)
#ロックをかけるのに失敗した際に行う処理
end
とします。
ロックを解除する場合はfilelock.unlock(LOCKFILE)とします。
これも同様に帰り値がtrueなら成功、falseなら失敗なのです。
クラスとはこのように使います。
クラスについてもrubyのユーザーガイドにも丁寧に解説されていますのでそちらも参照しておいてください。
ユーザーガイドのクラス
今回始めて使った命令など