●rubyとは・・・オブジェクト指向の言語。RubyはWEBアプリケーションの「システム」をつくるためのプログラミング言語。すべての値がオブジェクトになっている
ex)オブジェクトの種類はクラスというが、1.1 や "hello world" などの実際の値のことはインスタンスと呼ぶ。
●print・・出力
puts・・出力(改行)
p・・出力(デバック用)
●変数と定数・・慣習的に定数の頭文字は大文字
●良く使うメソッド・・upcase,upcase!
upcase は文字列を大文字にしたものを返すだけ、upcase! は文字列を大文字にしたものを返しつつ、元の文字列も大文字に書き換えるという違い。
●? がつくメソッド・・これは真偽値を返すメソッド
●リスト・・範囲を指定することでき、colors[0..2] とすると、colors[0] から colors[2] までを引っ張る。...と3つの時は直前まで引っ張る。
要素の末尾に何らかの要素をくっつけたい場合には、push というメソッド
colors << "silver"という書き方
●文字列を数値に変換・・整数に変換したい場合は to integer という意味で「y.to_i」、浮動小数点数にしたい場合は to float という意味で「y.to_f
●ハッシュと配列の相互変換
ハッシュから配列にするには scores.to_a
配列からハッシュにするには scores.to_a.to_h
●%の記法
Q は実は省略できるので %(hello) でも "hello" と全く同じ意味
配列においても["red","blue"]は%W(red blue)と同じ意味
●繰り返し処理・・配列.each do |変数名| *処理の終わりにはend
●ハッシュ・・複数の値を一括で管理する方法。ハッシュはそれぞれの値にキーと呼ばれる名前をつけて管理する。 {キー1 => 値1, キー2 => 値2}のようにつくる。キーと値の間は「=>」でつなぐ。
*省略した書き方が一般的。具体的には「:key =>」を「key:」というように省略。
●メソッドとは、複数の処理を1つにまとめたもの
def メソッド名(引数名)で引数を指定
●条件分岐・・case ... when ... else ... end
●繰り返し処理・・whileを用いた繰り返し,永遠に繰り返すloop
ループを抜けるための break、そしてループを 1 回スキップするための nextと一 緒に用いられることが多い
●戻り値・・真偽値を返すメソッドは、メソッド名の末尾に「?」をつける。
returnは、戻り値を返すだけでなく、メソッドの処理を終了させる性質も持っている。
よって、returnの後にあるメソッドの処理は実行されないので注意。
●キーワード関数・・引数の数が多くなると、呼び出し側で値がどの引数に入るのかがわかりにくくなる
① 定義側で、引数の後にコロンを付ける② 呼び出し側で、値の前に引数名を書く
●オブジェクト指向
●クラスのデータを定義する方法の1つに「attr_accessor シンボル」を使う方法がある
●クラス(設計図)を元に、新しくインスタンスを生成するには、「クラス名.new」とする。
インスタンス.変数名 = 値でそのインスタンス変数に値をセット
●インスタンスメソッドの中では、特殊な変数「self」を用いて「self.変数名」とすることで、インスタンス変数を扱うことができるようになる.インスタンス変数は変数名の前に @ をつけるルール
●initializeメソッド・・インスタンスの生成時に必ず実行したい処理をメソッドを呼び出すことなく実行することができます
●インスタンス変数にアクセスするためのメソッド。attr_accessor, attr_reader
ちなみに値を設定するほうのメソッドを setter、そして値を取得するほうのメソッドを getter、2 つを合わせてアクセサと呼んだりする
●self はそのメソッドを受け取っているインスタンス自身を指す
class クラス名
def initialize()
処理
end
end
●クラスメソッド・・クラスから直接取り出すことのできるクラスメソッドも存在する。クラス変数には @@ をつけることがルール
●入力受付・・入力を受け付けるには「gets.chomp」を使う。このコードが実行されると、コンソールが入力待機状態になる。gets.chomp.to_i」とすることで、入力された内容を数値に変換し、計算などにも使えるようになる。
●オーバーライド・・親クラスにあるメソッドと同じ名前のメソッドを子クラスで定義すると、メソッドを上書きすることができる
super
オーバーライドしたメソッドの中で「super」とすることで、親クラスの同名のメソッドを呼び出すことができる
●クラスメソッド・・・クラスメソッドは、「def クラス名.メソッド名」とすることで定義できる。インスタンスメソッドとの違いはメソッド名の前にクラス名を書く必要がある点