<1〜10>
Rubyでの便利なコマンド irb #インタラクティブにRubyを操作できる。少し何かを試したいときに。exitで抜ける。 ri #知りたい命令やオブジェクトのドキュメントを見ることができる。たとえば「ri Array」としてあげると Array オブジェクトに関する情報が出てくる。qキーで抜ける。複数行一気にコメントにしたい場合には、=begin と =end で囲う。
print #改行なし
puts #改行
p #デバッグ用 文字列だよということがわかりやすいように、ダブルクォーテーションで囲われて表示されたりする。複雑なデータだと構造が分かりやすいように表示してくれたりする。
定数は全大文字
「2/5r」 #5分の2を表す
四捨五入の場合は round、そして小数点以下切り捨ての場合は floor、小数点以下切り上げの場合は ceil という命令
upcase は文字列を大文字にしたものを返すだけ、upcase! は文字列を大文字にしたものを返しつつ、元の文字列も大文字に書き換えるという違いがあります。
!は大元のオブジェクトを書き換えてしまうという意味で「破壊的なメソッド」と呼んだりする。
?は真偽値を返すメソッド include? empty?など
colors[0..2] #colors配列のインデックス0〜2を引っ張ってくる
colors[0...2] #これは 0〜2 の直前までになるので、これも覚えておきましょう。
colors.push("gold) は colors << "gold" と省略できる
.size は要素の数
#ハッシュ scores = {taguchi: 300, fkoji: 400}
キーの一覧を引っ張ってきたい場合は scores.keys、値の一覧だけ引っ張ってきたい場合は scores.values
そのキーがあるかどうかは scores.has_key? で調べることができる
整数にしたい場合は to integer という意味で「.to_i」
浮動小数点数にしたい場合は to float という意味で「.to_f」
文字列にしたいなら to string で「.to_s」
.to_a で to array (配列)
.to_h で to hash
<11〜20>
ダブルクォーテーション "" # %Q で代用可 ""はQだけでも可 シングルクォーテーション '' # %q で代用可書式付きで文字列を埋め込む方法 % を使って「"文字列" % 値」のように表現できたりするので覚えておいてください。
文字列だったら %s、整数だったら %d、浮動小数点数だったら %f を使います。
例: "name: %s" % "taguchi" => "name: taguchi" と出力
10桁分使うなら %10s
10桁使って左詰めなら %-10s
printf は書式付きで文字列を表示するための命令
「"文字列" % 値」の % は , にすればいいので printf("name: %10s", "taguchi") としてあげましょう。
sprintf は表示するのではなくて文字列を返してくれる命令
文字列が返ってくるのでそれを p で表示したい場合は p sprintf(…) のようにしてあげれば OK
すごく単純な条件分岐の場合は if を後ろに書くこともできて、たとえば「puts "great!" if score > 80」といった書き方もできたりします。
case と when でsignalの条件分岐
gets は 1 行読み込むのですが、最後に改行コードがついているので chomp というメソッドでその最後の改行コードを取り除いてあげます
繰り返しは while や timesがある
配列やハッシュには for や each
times メソッドで見たように、繰り返す処理が 1 行ぐらいだったら do から end を { } で囲って 1 行で表現することもよくやる.
永遠に処理を繰り返す loop (Ctrl + C で止める)
ループを抜ける処理とよく使われ、具体的にはループを抜けるための break、そしてループを 1 回スキップするための next が使われる (next は一回だけスキップ)
値を設定するほうのメソッドを setter、そして値を取得するほうのメソッドを getter、2 つを合わせてアクセサと呼んだりする.
<21〜26>
メソッドのアクセス権はpublic private protectがある。(protectedは結構特殊)
new したときに呼ばれる initialize メソッドと、クラスの外に書いたメソッドは自動的に private になる。
private はレシーバーを指定できないメソッドになる(例えば User のインスタンスから呼び出すことはできないが、クラスの中からは呼び出せる)。
private ではレシーバーを指定できないので必ず self は省略
モジュールは module Movie end のように作る(モジュール名の1文字目は大文字)。
関連するメソッドや定数などをざっとまとめてグループ化したいだけのときに、モジュールは手軽に使えて便利。
例外が発生しそうな処理をまず begin と end で囲ってあげて、例外が発生した場合の処理を rescue の後に書いていってあげます。