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


Rubyの学習 free188
メソッド、メソッドのデフォルト、メソッドの引数の値を複数に、メソッドの値をリターン

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

C:\RubyTest>ruby test_sada12-2.rb
おはようございます。私が定近です。
こんにちは。私が定近です。
こんばんは。私が定近です。
涼しくなりましたね。私が定近です。
雨が降りそうです。私が橘高です。
いらっしゃいませ。私が橘高です。
ありがとうございます。私が平山です。
最近はもっぱらコンピューターに話しかけています。私が充始です。

ねむいです、私は 橘高 です。
集中力がでない、私は 只今定近を呼び出しております です。
しばらくおまちください、私は 只今定近を呼び出しております です。
ん?、私は 只今定近を呼び出しております です。
まあそうなりますね、私は 只今定近を呼び出しております です。
大きな声でお願いします、私は 只今定近を呼び出しております です。
しばらくおまちください、私は  只今定近を呼び出しております です。

値を名札付ける=値が1つ以上の場合 
値を名札付ける=値が1つ以上の場合 定近カンマ
値を名札付ける=値が1つ以上の場合 定近カンマ橘高カンマ
値を名札付ける=値が1つ以上の場合 定近カンマ橘高カンマ平山カンマ川上カンマ

値を名札付ける=
値を名札付ける=定近, 
値を名札付ける=定近, 橘高, 
値を名札付ける=定近, 橘高, 平山, 川上, 

_sadaSum = _sadaTashizan(_sada1, _sada2)
計算を開始しました60+35
合計 = 95
計算を終了します

計算を開始しました25+77
合計 = 102
計算を終了します

C:\RubyTest>




Tuesday,October,1,2013

プログラムの表示

=begin Tuesday,October,1,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_sada12-2.rb そして保存したファイル名を打ち込む。 =end #コメントテスト、ファイル名test_sada12-2テキスト #--------------------------------------------------- =begin メソッド定義側の引数を「仮引数」 メソッドの呼び出す側を「実引数」 def メソッド名(変数または実引数1, 変数または実引数2, ...) 実行する処理 実行する処理 end メソッド名(仮引数1, 仮引数2, ...) =end #! ruby -Ku require "kconv" def _sadaHello(_sadaMsg, _sadaName) print(Kconv.tosjis("#{_sadaMsg}"), Kconv.tosjis("。私が") + Kconv.tosjis("#{_sadaName}") + Kconv.tosjis("です。\n")) end _sadaHello("おはようございます", "定近") #  ↑これが呼び出し側オブジェクト #文字列の連結にカンマ(,)とプラスを使用した #メソット呼び出し側から呼び出されるオブジェクトのクラスを頭にもってくる #メソット呼び出し側、おはようどざいますが_sadaMsg、定近が_sadaNameに名札付けされる #呼び出されるオブジェクトの変数に値が名札付けされるとクラス内のローカル環境で使用される _sadaHello("こんにちは", "定近") _sadaHello("こんばんは", "定近") _sadaHello("涼しくなりましたね", "定近") _sadaHello("雨が降りそうです", "橘高") _sadaHello("いらっしゃいませ", "橘高") _sadaHello("ありがとうございます", "平山") _sadaHello("最近はもっぱらコンピューターに話しかけています", "充始") print("\n") #---------------デフォルトを設定-------------- =begin 引数が指定されない場合にデフォルトで出力する値を指定した。 「しばらくおまちください」と「只今呼び出しております」 1番目にデフォルトを設定すると2番目も設定しないとエラーとなる ↓値が含まれない場合の出力 ↓値が含まれない場合の出力 =end def _sadaHello(_sadaMsg="しばらくおまちください", _sadaName="只今定近を呼び出しております") print(Kconv.tosjis("#{_sadaMsg}"), Kconv.tosjis("、私は ") + Kconv.tosjis("#{_sadaName}") + Kconv.tosjis(" です。\n")) end _sadaHello("ねむいです", "橘高") _sadaHello("集中力がでない") _sadaHello() _sadaHello("ん?") _sadaHello("まあそうなりますね") _sadaHello("大きな声でお願いします") _sadaHello() print("\n") #---------------受けてのメソッドが設定した変数の個数以上の値を名札付けする------------- def _sadaHello(_sadaMsg, *_sadaNames) _sadaAllname = "値が1つ以上の場合 " _sadaNames.each do |_sadaName| _sadaAllname << _sadaName << "カンマ" #順番は、値を名札付ける→値が1つ以上の場合 →値→カンマ→値→カンマ→値→カンマ end print(Kconv.tosjis(_sadaMsg + "=" + _sadaAllname + "\n")) end _sadaHello("値を名札付ける") _sadaHello("値を名札付ける", "定近") _sadaHello("値を名札付ける", "定近", "橘高") _sadaHello("値を名札付ける", "定近", "橘高", "平山", "川上") print("\n") #---------------受けてのメソッドが設定した変数の個数以上の値を名札付けする-------------- def _sadaHello(_sadaMsg, *_sadaNames) _sadaAllname = "" _sadaNames.each do |_sadaName| _sadaAllname << _sadaName << ", " # ↑半角スペースが望ましい #順番は、値を名札付ける→無し→値→カンマ→値→カンマ→値→カンマ end print(Kconv.tosjis(_sadaMsg + "=" + _sadaAllname + "\n")) end _sadaHello("値を名札付ける") _sadaHello("値を名札付ける", "定近") _sadaHello("値を名札付ける", "定近", "橘高") _sadaHello("値を名札付ける", "定近", "橘高", "平山", "川上") print("\n") #---------------クラス内メソッドから呼び出し元メソッドに値を返す-------------- =begin リターン文を使いクラス内メソッドから呼び出し元メソッドに値を返す def メソッド名(変数1, 変数2, ...,) 実行する処理 実行する処理 return 式 end 変数 = メソッド名(引数1, 引数2, ...) =end def _sadaTashizan(_sadaNum1, _sadaNum2) return _sadaNum1 + _sadaNum2 end _sada1=60 _sada2=35 _sadaSum = _sadaTashizan(_sada1, _sada2) print(Kconv.tosjis("計算を開始しました"), _sada1, "+", _sada2, "\n") print(Kconv.tosjis("合計 = "), _sadaSum, "\n") print(Kconv.tosjis("計算を終了します\n")) print("\n") _sada1=25 _sada2=77 _sadaSum = _sadaTashizan(_sada1, _sada2) print(Kconv.tosjis("計算を開始しました"), _sada1, "+", _sada2, "\n") print(Kconv.tosjis("合計 = "), _sadaSum, "\n") print(Kconv.tosjis("計算を終了します\n")) print("\n") =begin これだとエラーがでます。 ↓クラス内の参照不可↓クラス内の参照不可 _sadaSum = _sadaTashizan(400, 600) print(Kconv.tosjis("計算を開始しました"), _sadaNum1, "+", _sadaNum2, "\n") print(Kconv.tosjis("合計 = "), _sadaSum, "\n") print(Kconv.tosjis("計算を終了します\n")) print("\n") =end


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

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

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