Rubyことはじめ4
今日も今日とてパーフェクトRubyをやる
今日は第3章。覚えること多めなのですぐ入ってこないのは飛ばしてやった。
第3章
演算子
::
の優先順位が一番高い
同値
a = [1,2,3] b = [1,2,3] p a == b # => true p a.equal?(b) # => false
unlessはifと同じ動きをする
n = 1 unless n.zero? p "nは0じゃない" else p "0や" end => "nは0じゃない"
後置if/unless
- ifやenlessは最後に評価された値を返す
- この戻り値を代入やメソッド呼び出しの引数として利用できる。
p '先に書くのか' if n == 1 # => '先に書くのか' p '先に書くのか2' unless n.zero? # => '先に書くのか2'
パーセント記法
%
はダブルクォートと同等%q
はシングルクォートと同等%w
は配列 式の展開はされない%W
は配列 式の展開がされる%i
要素がシンボルの配列を作る
繰り返し
languages = %w(Perl Python Ruby) i = 0 while i < languages.length p "Hello #{languages[i]}" i+=1 end => "Hello Perl" => "Hello Python" => "Hello Ruby"
例外処理
- Exceptionを継承したクラスはたくさんあるのです・
Safe navigation operator (v.2.3以降)
- ある値がnilでなければメソッドを呼び出したい的な
&.
を用いる
people = %w(hoge hage huge) person_0 = people[0] person_9 = people[9] p person_0&.capitalize # => hoge p person_9&.capitalize # => nil
仮引数は省略可能
def hoge(text = 'Hi') p text end hoge hoge('Yo')
ブロック
微妙な理解度
def block_sample p 'stand up' yield if block_given? p 'sit down' end # ブロックを渡さない場合 block_sample # => "stand up" # => "sid down" # ブロックを渡す block_sample do p 'work' end # => "stand up" # => "work" # => "sid down"
感想
文化多すぎ、書き方多すぎ。 代表的な書き方を実戦で描いていかないと覚えらんないなあ。