ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

パーフェクトRuby勉強日記 3章制御構造/メソッド/組み込み関数

気になったところをメモメモ。

3-1-3 ==演算子とオブジェクトの同値性

a='Alice'
b='Alice'

p a==b        #同値性を判定、true
p a.equal?(b) #同一性(同じインスタンスか)を判定、false

3-2-1 条件分岐

puts '0でした' if n.zero?
puts '0ではありませんでした' unless n.zero?
#後置if

後置ifは便利な気もするけどちょっと読みにくいかなあ

3-2-4 プログラムの終端を明示する

DATA.each_line do |line|
  puts line
end

__END__#半角アンダーバー2つなのね
いろはにほへと
ちりぬるを

アンダーバー2つは書面じゃなかなか分かりづらかった。
終端を明示し、それ以降はDATAという定数にFILEオブジェクトで格納される。

3-5-2 メソッド呼び出しとローカル変数

sweet = 'honey'

def sweet
  'salt'
end

p sweet   #->"honey" ローカル変数
p sweet() #->"salt"  メソッドを明示的に呼ぶ

メソッド呼び出しに()は省略できるんですねー

3-5-13 メソッド定義の取り消し

def greet
  puts 'hola'
end

greet
puts 'hi'

undef greet, puts
#メソッド取り消し 多様すべきではない

greet
puts 'hi'
#`<main>': undefined local variable or method `greet' for main:Object (NameError)

定義したメソッドの無効化までできるんですね…使い道あるのか


3-5-14 メソッドに別名をつける

#putsをgreetという名前で呼び出せるようにする
alias greet puts

greet 'hi!'

undef puts
#undefしても別名メソッドは取り消されない

greet 'ho!'

別名をつけて、さらにundefしても別名のほうが生きるのか 謎だ

3-6-2 外部コマンドを実行する

num=1
`head -#{num} ~/.vimrc`
 #バッククォート

バッククォートは苦手。でもコマンド実行できるのは良いね。


余談ですがeclipseだとエラーと判断しちゃうものが多くて困ってます。
たいがいはコマンドラインでやってあげるとエラーは出ないんですけど。

rubyeclipseで書いて、コマンドラインcygwinで同workspaceを操作してます。
これでファイル入出力とか引数とかも簡単にできるようになってずいぶんやりやすくなった。

しかしrubyはなんでもできすぎて、参考書を追ってもなんだかできてる感が無いなぁ…
学んでる感がないというか、身についてない…
rubyを使って1から何かを作ったほうが良いですね、写経じゃ限界ある。

あとyieldとブロックとProcあたりの概念がよく分からないので要復習だ。

パーフェクトRuby、もちろん一冊するつもりだけど、標準クラスのメソッドとメタプラグラミングのさわりぐらいまでやったらちょっと別の方法も考えようかな~