ruby基礎②ハッシュオブジェクト、オブジェクト変換、%記法、if、case、while、time、for、each、loop
本日もドットインストールでrubyの基礎を復習しました!!
復習すると理解が進みます!!
オブジェクト変換はなんとなく使用していたが、
to_i は to integerの略だったとは。細かいところを知るときもちいですね。。
スクールの仲間と新しいアプリケーション開発も始まり、そちらも後々報告できればと思います。
明日は初、企業訪問です。
2011年以来の就活?になります。緊張しますね。
今回は本気で訪問企業を理解して、相互理解を深めて、本当に自分の目指すものになれる企業なのか確認してきます!!!
# ----------------------------------------------------------------- # ハッシュオブジェクト #- kye /value をペアにできる # sakurai 200 ペアにしたい # kondo 400 ペアにしたい # 下記の3パターンでセットできる。 scores = {"sakurai" => 200, "kondo" => 400} scores = {:sakurai => 200, :kondo => 400} scores = {sakurai: 200, kondo: 400} p scores[:sakurai] #keyを[]でつけることでそのvalueが出力 => 200 scores[:sakurai] = 600 #valueを200から600に上書きできる p scores => {:sakurai=>600, :kondo=>400} scores = {sakurai: 200, kondo: 400} p scores.size p scores.keys p scores.values p scores.has_key?(:sakurai) => 2 [:sakurai, :kondo] [200, 400] true # ----------------------------------------------------------------- # オブジェクトの変換 x = 50 #integer y = "3" #string p x + y => "in `+': String can't be coerced into Fixnum (TypeError)" p x + y.to_i #intgerへ変換 p x + y.to_f #floatへ変換 p x.to_s + y #stringへ変換 => 53 53.0 "503" scores = {sakurai: 200, kondo: 400} p scores.to_a => [[:sakurai, 200], [:kondo, 400]] p scores.to_a.to_h => {:sakurai=>200, :kondo=>400} # ----------------------------------------------------------------- # %記法 # 下記の出力値はそれぞれ同じ puts "hello" puts %Q(hello) puts %(hello) puts 'hello' puts %q(hello) # %を使うと何が便利なのか puts "he\"llo" #"を文字列として使いたい場合はバックスラッシュが必要 puts %Q(he"llo) #"を文字列として使いたい場合はバックスラッシュが不要 #配列の場合も%記法ができる p ["red","blue"] p %W(red bule) p ['red','blue'] p %w(red bule) # ----------------------------------------------------------------- # 書式付きで値を埋め込む # %s 文字列 # %d 整数 # %f 浮動小数点数 p "name: %s" % "sakurai" p "name: %10s" % "sakurai" p "name: %-10s" % "sakurai" => "name: sakurai" "name: sakurai" "name: sakurai " p "id: %05d, rate: %10.2f" % [355,3.284] #5桁で表示したいが5桁に満たない場合05と記載,10.2は全体の文字数が10桁、そのうち2桁が小数点以下。 => "id: 00355, rate: 3.28" printf("name: %-10s\n" , "sakurai") printf("id: %05d, rate: %10.2f\n" , 355,3.284) => name: sakurai id: 00355, rate: 3.28 p sprintf("name: %-10s\n" , "sakurai") #sprintfは文字列を返してくれる p sprintf("id: %05d, rate: %10.2f\n" , 355,3.284) => "name: sakurai \n" "id: 00355, rate: 3.28\n" # ----------------------------------------------------------------- #if # >(より大きい), <(より小さい), >=(以上), <=(以下), ==(と等しい), !=(と等しくない) # && (AND), ||(OR), !(NOT) scores = gets.to_i #getsでユーザーからの入力 if scores > 80 then puts "great!" elsif scores > 60 then puts "good!" else puts "so so ...." #thenは省略可能 puts "great!" if score > 80 # #この様な書き方もある # ----------------------------------------------------------------- #caseによる条件分岐 signal = gets.chomp #chompは改行を取り除く case signal when "red" puts "stop!" when "green" , "blue" puts "go!" when "yellow" puts "caution!" else puts "wrong signal" end # ----------------------------------------------------------------- #while 繰り返し i = 0 while i < 5 do puts "hello" i = i + 1 # i += 1 でも同じ end => hello hello hello hello hello #time 繰り返し 5.times do #|i|で繰り返しの何番目をiで表示できる puts "hello" end 5.times { |i| puts "#{i}: hello"} # この様な形でも表現できる => 0: hello 1: hello 2: hello 3: hello 4: hello # ----------------------------------------------------------------- #for 繰り返し for i in 15..20 do #15..20までをiに格納して繰り返し出力。doは省略可能。 p i end => 15 16 17 18 19 20 for color in ["red","blue"] do p color end for name,score in {sakurai: 200, kondo: 400} do p "#{name}: #{score}" end #[]や{}も使用できる => "red" "blue" "sakurai: 200" "kondo: 400" #eachの繰り返し (15..20).each do |i| #15..20 p i end ["red","blue"].each do |color| p color end {sakurai: 200, kondo: 400}.each do |name, score| p "#{name}: #{score}" end # ----------------------------------------------------------------- # loop #繰り返しループする i = 0 loop do p i i += 1 end #break 処理を止める #next 繰り返し処理をスキップする 10.times do |i| if i == 7 then break end p i end # -----------------------------------------------------------------