*ブログに戻る →ここ です。


Rubyの学習 free196
モジュールのインクルード、モジュールを関数のように使用するファンクション設定

↓Rubyのプログラムを実行すると以下のように表示される。

C:\RubyTest>ruby test_sada16-1.rb
10と20と30と40と50の平均は30です。
5と10と15と20と25の平均は15です。
78と45どちらが小さいですか
45
78と45どちらが大きいですか
78
1+2+3+4+5= の合計から平均を求めると
3
2つの値78と2012の中で値が大きいのは2012である。
2つの値9134と2013の中で値が大きいのは9134である。
2つの値56と21の中で値が大きいのは56である。

C:\RubyTest>




Wednesday,October,9,2013

プログラムの表示

=begin Wednesday,October,9,2013 ○値から謎の多いクラス名を調べてみる。 ルビーの値(オブジェクト)が所属するクラス Numeric (説明はfree171.html)[step]メソッドはNumericクラスである。 [step]メソッドは、任意に決めた浮動小数点の値を繰り返し足していく事ができるメソット。 Float (浮動小数点数) Integer (説明はfree170.html)[times][upto][downto]メソッドはIntegerクラス Numericのサブクラスでもある。 このメソッドは要素などの値の範囲を指定し、for句(演算子)と連動させる事で変数へ繰り返し値を名札 付けしながらブロック内のプログラムを実行させる。 Bignum (大きな整数) Fixnum (整数) Kernel [loop]メソッドはKernelクラスである。無限に繰り返しを行なう。(今回学習した) PHPでの値の型 string (文字句) integer (数字) double (小数点) free147.php ←ここで試した。 謎の多いクラスを調べる方法は下記、またの機会に別のページで試してみます。 #! ruby -Ku print("定近です。".class())←クラスを調べるには、これを使って調べます。 print("\n") #! ruby -Ku ← の「u」とは、UTF-8 のこと(文字化けを回避します)。 s or S Shift_JIS e or E EUC-JP u or U UTF-8 n or N NONE(ASCII) 「require」メソッドで「kconv」ライブラリを読みんで、モジュール関数「Kconv.tosjis()」 を使用することにより表示の時に Shift_JIS に変換している。(メソットというからにはクラスがあるんでしょうね) まだきちんと理解できていません。 保存するときは、文字コードセットを UTF-8 にすること。 サクラエディタを使用しています。 コマンドプロンプトを開きます。 C:Documents and Settings\User> C:Documents and Settings\User>cd C:\rubytest と入力する。「cd」カレントディレクトリの略。現在のフォルダという意味(フォルダは任意の名前で自作した) C:\RubyTest>ruby test_sada16-1.rb そして保存したファイル名を打ち込む。 =end #コメントテスト、ファイル名test_sada16-1テキスト #--------------------------------------------------- #! ruby -Ku require "kconv" =begin モジュールは外に向けてオブジェクトは作成できない。 モジュールの利用方法はクラスの中にインクルードして利用する。 モジュールの利用方法は「モジュール名.メソッド名」の形式で関数のように実行する、と説明にあるがよくわからない =end module SadaHeikinModule01 #モジュール名は大文字からはじめる def _sadaHeikin(v, w, x, y, z) _sadaKekka = (v + w + x + y + z) / 5 return _sadaKekka #リターンにより変数をクラス内に転送 end end class SadaTest #クラス名は大文字からはじめる include SadaHeikinModule01 #インクルードの設定にはモジュール名「SadaHeikinModule01」を指定する #○上記のモジュールのメソッド「_sadaHeikin(v, w, x, y, z)」をインクルード def _sadaDisp(v, w, x, y, z) _sadachika = _sadaHeikin(v, w, x, y, z) #モジュールを実行する、リターンは値「_sadaKekka」がオブジェクト「 _sadaHeikin(v, w, x, y, z)」に返ってきている print(v, "と", w, "と", x, "と", y, "と", z, "の平均は", _sadachika, "です。\n") end end _sada1 = SadaTest.new _sada1._sadaDisp(10, 20, 30, 40, 50,) _sada1._sadaDisp(5, 10, 15, 20, 25,) #---------モジュール名.メソッド名の文法で、モジュールを実行するケース--------------------------- module SadaSuuchi def _sadaMin(x, y) print(x, "と", y, "どちらが小さいですか\n") if x < y return x else return y end end def _sadaMax(x, y) print(x, "と", y, "どちらが大きいですか\n") if x > y return x else return y end end module_function :_sadaMin #○モジュールを関数のよう使用する場合はこのように設定する module_function :_sadaMax end print(SadaSuuchi._sadaMin(78, 45), "\n") #モジュール名.メソッド名、この使い方にするには上記の「module_function :_sadaMin」と設定する必要がある print(SadaSuuchi._sadaMax(78, 45), "\n") #----------------モジュールを関数のように使用するケース---------------------- module SadaHeikinModule02 #モジュール名は大文字からはじめる def _sadaHeikin02(v, w, x, y, z) _sadachika = (v + w + x + y + z) / 5 print(v, "+", w, "+", x, "+", y, "+", z, "= の合計から平均を求めると\n") return _sadachika #○変数「_sadachika」が、オブジェクト「_sadaHeikin02(1, 2, 3, 4, 5)」に返る end module_function :_sadaHeikin02 #○モジュールを関数のよう使用する場合はこのように設定する end print(SadaHeikinModule02._sadaHeikin02(1, 2, 3, 4, 5), "\n") #変数「_sadachika」の値は、オブジェクト「_sadaHeikin02(1, 2, 3, 4, 5)」に返される #クラス「SadaTest」を全く通さず、モジュールのみで計算している #------------------------------------------- module SadaSuuchi2000 #モジュール名は大文字からはじめる def _sadaMax(x, y) if x > y return x else return y end end end class SadaTest include SadaSuuchi2000 #インクルードの設定にはモジュール名「SadaSuuchi2000」を指定する def _sadaDisp(x, y) _max = _sadaMax(x, y) #○引数の値「x」「y」がオブジェクト「_sadaMin(x, y)」に直接返される print("2つの値", x, "と", y, "の中で値が大きいのは", _max, "である。\n") end end _sada20 = SadaTest.new _sada20._sadaDisp(78, 2012) _sada20._sadaDisp(9134, 2013) _sada20._sadaDisp(56, 21)


* 参考にしたサイトは→ こちら です。

これは赤色の文字例です。

これは青色の文字例です。