先週に引き続き、今週もRubyについて学んでいる。
先週の後半で、Rubyから気移りして昔やっていた、Swiftの勉強に逃避していた。
新しい言語を学ぶのは面白いけど、学習コストとカロリーが結構かかるので他の言語へと行きがちである。
最低でも、10時間くらいは初期に投資しなくてはいけないのかな。
早く物を作りたいという欲求で少し焦るが、今週はチュートリアルで精一杯な気がする。
##今週の内容
- 変数定数について
- オブジェクトについて
- 数値オブジェクトについて
- 文字列オブジェクトについて
- ? や ! がついたメソッドを使おう
- 配列オブジェクトを使おう
- ハッシュオブジェクトを使おう。
- オブジェクトを変換
- %記法を使う
- 書式付きで値を埋め込む
- ifで条件分岐をする
##変数について
変数はプログラミングをやっている人ならば理解しているはず。
###変数は、英小文字。
msg = "Hello world"
puts msg
###定数は、英大文字。
※
VERSION = 1.1
puts VERSION
##オブジェクトについて
rubyは基本的に全て、オブジェクトに分類される。
メソッドは、クラスの中に含まれる。
ざっくり言うと下記のような感じ。
##数値オブジェクトについて
含まれるクラスやメソッドを調べる方法。
とても簡単!
インスタンス.class
インスタンス.methods
四則演算は他のものと一緒。
べき乗は **
浮動小数を表現したいときは、数値のどちらかを小数点にすれば自動的に表示してくれる。
例えば、 10.0 / 3 にすれば、3.3と表示される。
###分数表現
Rational(2,5)
2/5という表現。分数表現で四則演算も可能。
短縮表現として、下記のような表現も可能。
2/5r
###Floatのデータ型のときは
- 10.1,round #四捨五入
- 10.1.floor #小数点以下切り捨て
- 10.1.ceil #小数点以下切り上げ
##文字列オブジェクトについて
###特殊文字
改行: /n
タブ: /t
###式展開の表示
puts "price #{3000*4}"
※シングルコーテーションの場合は、単純に、文字が表示される。
#{式} で式展開が可能になる。
###文字列の式展開例
変数の名前と文字列を合わせて表示するケース。
name = "Taro"
puts "hello #{name}"
###文字列 に対して式を展開する。
puts "hello" * 10
##?や!がついたメソッドを使おう。
###!マークの使い方
upcase #文字列を大文字にするメソッド
downcase #文字列を小文字にするメソッド
reverse #文字列を逆にする
upcase! #破壊的なメソッド。大元の数値を書き換える。
name = "taguchi"
puts name.upcase
puts name
puts name.upcase!
puts name #大元のtaguchiが変更されている。
?の使い方
?は基本的に真偽値を確かめるために使用する。
真偽値でtrue / false を返す。
name = "taguchi"
p name.empty? #中身が空か確かめる。
p name.include?("g") #gという文字列が含まれるか確認する。
##配列
配列の使い方
colors = ["red", "blue", "yellow"]
p colors[0] #配列の0番目
p colors[-1] #配列の最後尾
p colors[0..2] #0から二番目までも配列
p colors[0...2] #0から2の直前
p colors[5] # 配列になにもはいっていないときは、nilが返ってくる
colors[0] = "pink" #配列0の書き換え
colors[1..2] = ["white" , "black"] #配列1、2を書き換え
colors.push("gold") #配列の末尾に配列追加
colors << "silver" #上記pushの短縮表現。
p.colors
p colors.size #要素の数を示す
p colors.sort #要素の並び替えをオコアヌ
##ハッシュオブジェクトを使おう。
ハッシュオブジェクトは、keyとvalueを保存することのできるオブジェクト。
scores = {"taguchi" => 200, "fkoji" => 400} #{}がハッシュ? keyと値を結びつけるために=>を使う。
#keyはシンボルオブジェクトを使う。 ※タブルコーテーションを : に変えるだけ
scores = {:taguchi => 200, :fkoji => 400}
#さらに短くすると
scores = {taguchi:200, fkoji:400}
#ハッシュへのアクセス
p scores[:taguchi]
scores[:fkoji] = 600 #fkojiの数値の変更
p scores
#便利なメソッド
p scores.size #要素の数の確認
p scores.keys # keyの一覧確認
p scores.values #valueの一覧確認
p scores.has_key?(:taguchi) #keyの中にtaguchiがあるかどうかの確認
##オブエジェクトを変換
整数への変換 .to_i
不動小数点への変換 .to_f
文字列変換 .to_s
配列への変換 .to_a
ハッシュへの変換戻し .to_h
scores = {taguchi:200, fkoji : 400}
p scorers.to_a #配列への変換。keyと値が配列へと変換される。
##%記法を使う
puts "hello"
puts hello
は、%記法で書くことができる。
puts %Q(hello)
puts %(hello) #上の記法と一緒の意味。Qの省力。
puts %q(hello) #シングルコーテーションの意味と同様になる。
シングルコーテーションやダブルコーテーションを使いたいときに便利な記法。
###配列で文字列管理
p ["red" , "blue"]
p %W[red blue] #上記と一緒の意味。
##書式付きで値を埋め込む
%を使って文字列に書式を埋め込む。
"文字列" % 値
文字列 %s
整数 %d
浮動小数店 %f
p "name: %s " % "taguchi"
p "name: %10s " % "taguchi" #10文字分の文字列を指定
p "name: %-10s" % "taguchi" #10文字分の文字列を指定して、左寄せ。
#idとrateを表示したい。
p "id: %05d , rate: %10.2f" % [355, 3.284] #配列でidに整数、rateに浮動小数を入れる。
#printf / sprintfの使い方
printf("name: %10s\n", "taguchi") # %じゃなくて、カンマでok
printf("id: %05d , rate: %10.2f\n" , 355, 3.284)
##ifで条件分岐する
if 条件 then
処理
end
※then は省略することが可能。
score gets.to_i
if score > 80 then
puts "great"
else if score >60 then
puts "good"
else
puts "so..so.."
end
#別な書き方 if を後ろに置くパターン
puts "great" if score > 80
###case ~ signalの書き方
case signal
when "条件" then
処理
else
処理
end
※thenは省略可能
signal = gets.chomp # 改行コードをchompでなくす。
case signal
when "red" then
puts "stop!"
when "green","blue" then #カンマでシグナルをいくつか置くことも可能。
puts "go!"
when "yellow" then
puts "caution!"
else
puts "wrong signal"
end
##まとめ
- rubyならではの記法もでてきて、少しワクワク。
- ここまで、1時間半くらいかかっている。