ひよこの外部記憶

めもおきば

パーフェクト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チェックが簡単に書ける、と