パーフェクトRuby 2章
#第二章
簡潔にまとまってるのでreferenceに良いかも、忘れた頃にもう一回読んでも良いかも
以下、曖昧だった箇所、初めて知った事
##スコープ
### ローカル変数
- JavaScriptを弄った後いつも混乱するからまとめ
- Rubyのスコープはブロック > メソッド定義 > クラス定義 > トップレベルで作られる
- ローカル変数はスコープ毎に定義され、外の変数は見えない(こうあるべきよね)
- ブロックのみ例外で、外にあるローカル変数触れる
※外からブロック内に定義されたローカル変数には(もちろん)触れない
##真偽値
- Rubyではfalseとnilのみが偽、他は全て真
- JavaScriptのようにundefinedとnilの区別が無いため、例えば配列の要素取り出したらnilだった場合
1.何も入らなかった
2.入っていた値がnilだった
の切り分け作業が発生する。
というかそんな切り分けが起きないようにコーディングしましょうっていう事(なんでしょうきっと)
##self
- Rubyのselfはインスタンス自身を返す(Java等のthisと同じ)
- クラス内でレシーバを書かずメソッド名を書いた場合selfがレシーバとなる
- 基本的にselfは書かなくて良いが、インスタンス変数への代入では、selfを書かなかった場合、ローカル変数宣言になってしまう
##Arrayの宣言
%i(red green blue) #=> [:red, :green, :blue]と一緒
※Ruby2.0から
##多重代入
これを使うと変数の交換が以下の記述でいける
a, b = b, a
##自己代入
Rubyに無いと思ってた、なんでだろう?
a ||= 2
と書くとaがnilまたはfalseであった場合aに2を代入という意味
nullチェックが簡単に書ける、と