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


Rubyの学習 free191
値が無い場合のデフォルト値

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

C:\RubyTest>ruby test_sada13-3.rb
強制的に表示する場合はこのようにお願いします。
あたらしい数字、文字のオブジェクトは名札付けできません

値を入力しなさい
数字でもダブルで囲え2013
定丸船
定輪車
値を入力しなさい
2回
3回

ダンボール
あほだな忘れてっぞ
888
999
あああ、プリントするのにインスタンス変数を日本語変換で囲う必要はない
あほだな忘れてっぞ
ううう

値は入力しとけよ
ボックス
222
値は入力しとけよ
444
おおお、プリントするのにインスタンス変数を日本語変換で囲う必要はない
かかか
ききき

値を入力してください
箱
222
333
444
ききき
かかか
値を入力してください

C:\RubyTest>




Friday,October,4,2013

プログラムの表示

=begin Friday,October,4,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_sada13-3.rb そして保存したファイル名を打ち込む。 =end #コメントテスト、ファイル名test_sada13-3テキスト #--------------------------------------------------- #! ruby -Ku require "kconv" #一般的には外のメソットに引数を入れておく、 #このケースは引数が空だがメソッド「initialize」が真であるので強制的にブロック内のプログラムを実行する #このケースではインスタンス変数に文字列オブジェクトが格納される #新しく値を格納する事はできない、なぜなら強制的に「未定義でございます」この文字列が名札付けられるからである class SadaCar def initialize() @name = "強制的に表示する場合はこのようにお願いします。 あたらしい数字、文字のオブジェクトは名札付けできません" end def _sadaName() print(Kconv.tosjis(@name), "\n") end end _sada1 = SadaCar.new() _sada1._sadaName() #---------------------------------- print("\n") class SadaBoat def initialize(_sadachi="値を入力しなさい") @name = _sadachi end def _sadaDisp print(Kconv.tosjis(@name), "\n") end end _sadaBo0 = SadaBoat.new() _sadaBo1 = SadaBoat.new("数字でもダブルで囲え2013") _sadaBo2 = SadaBoat.new("定丸船") _sadaBo3 = SadaBoat.new("定輪車") _sadaBo4 = SadaBoat.new() _sadaBo5 = SadaBoat.new("2回") _sadaBo6 = SadaBoat.new("3回") _sadaBo0._sadaDisp _sadaBo1._sadaDisp _sadaBo2._sadaDisp _sadaBo3._sadaDisp _sadaBo4._sadaDisp _sadaBo5._sadaDisp _sadaBo6._sadaDisp #↑オブジェクト ↑メソッド名 #オブジェクトが違う場合は、インスタンス変数による引数の名札付けでは上書きされない #----------------------------------- print("\n") #外からいきなり引数をクラスの内側のメソットに渡さない文 #○たいへんな事実が発覚した。 #プリントするのに日本語変換を意識して「Kconv.tosjis()」をつける必要ないですね #これを付けると数字オブジェクトが出力できずエラーになります。 class SadaBox def _sadaSet(_sadachi="あほだな忘れてっぞ") @name = _sadachi end def _sadaDisp() print(@name, "\n") end end #クラスへアクセスするためにオブジェクトに名札付けて短縮する #クラスは同じだがオブジェクトは全て違う _sada1 = SadaBox.new() _sada1._sadaSet("ダンボール") _sada2 = SadaBox.new() _sada2._sadaSet() _sada3 = SadaBox.new() _sada3._sadaSet(888) _sada4 = SadaBox.new() _sada4._sadaSet(999) _sada5 = SadaBox.new() _sada5._sadaSet("あああ、プリントするのにインスタンス変数を日本語変換で囲う必要はない") _sada6 = SadaBox.new() _sada6._sadaSet() _sada7 = SadaBox.new() _sada7._sadaSet("ううう") _sada1._sadaDisp() _sada2._sadaDisp() _sada3._sadaDisp() _sada4._sadaDisp() _sada5._sadaDisp() _sada6._sadaDisp() _sada7._sadaDisp() #↑オブジェクト ↑メソッド名 #オブジェクトが違う場合は、インスタンス変数による引数の名札付けでは上書きされない #--------------------------- print("\n") class SadaBox2 def _sadaSet(_sadachi="値は入力しとけよ") @name = _sadachi end def _sadaDisp() print(@name, "\n") end end #クラスへアクセスするためにオブジェクトに名札付けて短縮する #クラスは同じだがオブジェクトは全て違う _sada0 = SadaBox2.new() _sada0._sadaSet() _sada1 = SadaBox2.new() _sada1._sadaSet("ボックス") _sada2 = SadaBox2.new() _sada2._sadaSet(222) _sada3 = SadaBox2.new() _sada3._sadaSet() _sada4 = SadaBox2.new() _sada4._sadaSet(444) _sada5 = SadaBox2.new() _sada5._sadaSet("おおお、プリントするのにインスタンス変数を日本語変換で囲う必要はない") _sada6 = SadaBox2.new() _sada6._sadaSet("かかか") _sada7 = SadaBox2.new() _sada7._sadaSet("ききき") _sada0._sadaDisp() _sada1._sadaDisp() _sada2._sadaDisp() _sada3._sadaDisp() _sada4._sadaDisp() _sada5._sadaDisp() _sada6._sadaDisp() _sada7._sadaDisp() #↑オブジェクト ↑メソッド名 #オブジェクトが違う場合は、インスタンス変数による引数の名札付けでは上書きされない #--------------------------------- print("\n") class SadaGoods def initialize(_sadachi="値を入力してください") @name = _sadachi end def _sadaDisp() print(@name, "\n") end end #クラスへアクセスするためにオブジェクトに名札付けて短縮する #クラスは同じだがオブジェクトは全て違う _sada0 = SadaGoods.new() _sada1 = SadaGoods.new("箱") _sada2 = SadaGoods.new(222) _sada3 = SadaGoods.new(333) _sada4 = SadaGoods.new(444) _sada5 = SadaGoods.new("ききき") _sada6 = SadaGoods.new("かかか") _sada7 = SadaGoods.new() _sada0._sadaDisp() _sada1._sadaDisp() _sada2._sadaDisp() _sada3._sadaDisp() _sada4._sadaDisp() _sada5._sadaDisp() _sada6._sadaDisp() _sada7._sadaDisp() #↑オブジェクト ↑メソッド名 #オブジェクトが違う場合は、インスタンス変数による引数の名札付けでは上書きされない =begin 見本、お手本 クラス外のメソットを複数作ってもインスタンス変数に名札付けられる値は上書きされない class クラス名 def メソッド名 @name = 値 end end オブジェクト名1.メソッド名(引数1, 引数2, ...) オブジェクト名2.メソッド名(引数1, 引数2, ...) オブジェクト名3.メソッド名(引数1, 引数2, ...) =end


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

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

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