感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

【プログラミング 112.5時間】Rubyでハッシュを使う。

スポンサーリンク

今日のRubyの教科書にさせてもらったのは「作りながら学ぶRuby

作りながら学ぶRuby入門 第2版

作りながら学ぶRuby入門 第2版


「たのしいRuby」の次に読むための本として購入した。
ただ、時間が空いてしまったので、たのしいRubyで勉強したことがけっこう忘れてしまっていることに気付いた。
自分は物覚えが良くない方だと思うので、何度でも繰り返そうと思う。
繰り返し繰り返しやって、体で覚えたことはきっと忘れない。

■ハッシュ
ハッシュは配列で「何番目」という情報の代わりにキーとなるオブジェクトを持って、それに対応するデータ(値)を持つデータ構造になっている。

・ハッシュを作り、ハッシュの要素をすべて取り出すサンプル

#ハッシュを作る
#ハッシュリテラルの例
students = {} #空のハッシュ
friends = { "mizky" => "Ito Mizky", "takaky" => "Hosaka Takaky" }

#シンボルを使った例
friends2 = { :ten => "Tenshin Tanaka", :naoki => "Kawaguchi Naoki" }

#newメソッドを使う
friends3 = Hash[ :toshi => "Setojima Toshi",
				:teru => "rute tomonaga" ]

friends.each { |key, value|
	puts "#{key}----#{value}"
}

friends2.each { |key, value|
	puts "#{key}----#{value}"
}

friends3.each { |key, value|
	puts "#{key}----#{value}"
}

結果

mizky----Ito Mizky
takaky----Hosaka Takaky
naoki----Kawaguchi Naoki
ten----Tenshin Tanaka
toshi----Setojima Toshi
teru----rute tomonaga

■ハッシュに要素を追加、削除、検索
delete,include?などを使う
・サンプル

#ハッシュを作る

#newメソッドを使う
friends3 = Hash[ :toshi => "Setojima Toshi",
				:teru => "rute tomonaga" ]

#ハッシュに要素が含まれているか確認する
p friends3.include?( :sho ) #falseを返す

#ハッシュの要素を削除する
friends3.delete( :teru )

#ハッシュに要素を追加する
friends3[ :hagi ] = "Hagiwara shige"

friends3.each { |key, value|
	puts "#{key}----#{value}"
}

結果

false
hagi----Hagiwara shige
toshi----Setojima Toshi

正規表現
正規表現には文字を分類したり、文字の集合を表したりする記法が用意されていて、このような記法を「メタ文字」と呼んでいる。

.   任意の1文字
[ ]  文字の集まりの指定[a-f]とか
[^ ]  文字の集まるの逆指定[^a-h]aからhのいずれでもない
\w   英数字1文字[a-zA-Z]
\s      空白文字1文字
\d   数字1文字
*    直前のパターンの0回以上繰り返し
+    直前のパターンの1回以上の繰り返し
?       直前のパターンの0回または1回の繰り返し
^    行頭にマッチ
$    行末にマッチ
|    選択
()      グループ化

正規表現grepするときとかにもよく使うから、ちゃんと覚えたい。

Rubyで日付を取得する

require 'date'
now = DateTime.now
puts now.to_s
puts now.new_offset.to_s

now_time = Time.new
now_datetime = DateTime.now
puts now_time.year        #2013
puts now_time.hour        #15
puts now_datetime.hour    #15
puts now_time.zone        #東京(標準時)
puts now_datetime.zone    #+09:00

DateTime#zoneはGMTからの数値オフセットを文字列で返す