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


Rubyの学習 free183
ハシュのデフォルト設定のいろいろ

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

C:\RubyTest>ruby test_sada11-3.rb
住所 : Fukuyama
住所 : sada_none

住所 : Fukuyama
住所 : Fuchu
住所 : Hirayama
要素数 : 3

住所 : Fukuyama
住所 : Fuchu
住所 : Hirayama

住所 : Fuchu
住所 : sada_none
住所 : sada_none
住所 : Fukuyama
住所 : Fukuyama
住所 : hira_none
住所 : Hirayama

住所 : Fuchu
住所 : sadachika_none
住所 : sadachika_none
住所 : Fukuyama
住所 : Fukuyama
住所 : hira_none
住所 : Hirayama

C:\RubyTest>




Sunday,September,29,2013

プログラムの表示

=begin Sunday,September,29,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_sada11-3.rb そして保存したファイル名を打ち込む。 =end #コメントテスト、ファイル名test_sada11-3テキスト #--------------------------------------------------- #! ruby -Ku require "kconv" #該当するキーが無い場合はsada_noneの値を返す _sadaAddress1 = Hash.new("sada_none") #ハシュオブジェクトの要素にキーと値を名札付けした。 #キー「Sadachika」に対応する値はFukuyama、該当するキーが無い場合はsada_noneの値を返す。 _sadaAddress1["Sadachika"] = "Fukuyama" print(Kconv.tosjis("住所 : "), _sadaAddress1["Sadachika"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress1["Yamada"], "\n") print("\n") #-------------------------------- #該当するキーが無い場合キーそのものの値を返す _sadaAddress2 = Hash.new{|hash, key| hash[key] = key } _sadaAddress2["Sadachika"] = "Fukuyama" _sadaAddress2["Kittaka"] = "Fuchu" print(Kconv.tosjis("住所 : "), _sadaAddress2["Sadachika"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress2["Kittaka"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress2["Hirayama"], "\n") print(Kconv.tosjis("要素数 : "),_sadaAddress2.length(), "\n") #このlength()は、あまり理解できていない print("\n") #-------------------------------- #該当するキーが無い場合キーそのものの値を返す _sadaAddress3 = Hash.new{|hash, key| key } #キー「Sadachika」に対応する値はFukuyama、該当するキーが無い場合はキーそのものの値を返す _sadaAddress3["Sadachika"] = "Fukuyama" #ハシュオブジェクトの要素にキーと値を名札付けした。 _sadaAddress3["Kittaka"] = "Fuchu" print(Kconv.tosjis("住所 : "), _sadaAddress3["Sadachika"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress3["Kittaka"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress3["Hirayama"], "\n") print("\n"); #-------------------------------- _sadaAddress4 = Hash.new("sada_none") #デフォルトは上に持ってこないとだめ =begin ハジュオブジェクトによって要素を連続で名札付けできるのだが、どうも不調なので個別に要素を名札付けした 不調だった→_sadaAddress4 = Hash["Sadachika" => "Fukuyama", "Kittaka" => "Fuchu"] =end _sadaAddress4["Sadachika"] = "Fukuyama" _sadaAddress4["Kittaka"] = "Fuchu" print(Kconv.tosjis("住所 : "), _sadaAddress4["Kittaka"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress4["Kayama"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress4["Kida"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress4["Sadachika"], "\n") #キーが該当しない場合、キーの右のデフォルト設定sada_noneを返す #キーが該当しない場合、キーの右のデフォルト設定hira_noneを返す #○「hash["Katou"]」も「hash.fetch("Katou")」も同じ意味 print(Kconv.tosjis("住所 : "), _sadaAddress4.fetch("Sadachika", "sada_none"), "\n") print(Kconv.tosjis("住所 : "), _sadaAddress4.fetch("Hirayama", "hira_none"), "\n") #該当するキーが無い場合、キーの右側のデフォルト設定にによりキーそのものを返す print(Kconv.tosjis("住所 : "), _sadaAddress4.fetch("Hirayama"){|key|key}, "\n") print("\n"); #-------------------------------- #該当するキーが無い場合sadachika_noneの値を返す _sadaAddress5 = Hash.new() _sadaAddress5.default = "sadachika_none" _sadaAddress5["Sadachika"] = "Fukuyama" _sadaAddress5["Kittaka"] = "Fuchu" print(Kconv.tosjis("住所 : "), _sadaAddress5["Kittaka"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress5["Kayama"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress5["Kida"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress5["Sadachika"], "\n") print(Kconv.tosjis("住所 : "), _sadaAddress5.fetch("Sadachika", "sada_none"), "\n") print(Kconv.tosjis("住所 : "), _sadaAddress5.fetch("Hirayama", "hira_none"), "\n") print(Kconv.tosjis("住所 : "), _sadaAddress5.fetch("Hirayama"){|key|key}, "\n")


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

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

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