気になったところをメモメモ。
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だとエラーと判断しちゃうものが多くて困ってます。
たいがいはコマンドラインでやってあげるとエラーは出ないんですけど。
rubyはeclipseで書いて、コマンドラインはcygwinで同workspaceを操作してます。
これでファイル入出力とか引数とかも簡単にできるようになってずいぶんやりやすくなった。
しかしrubyはなんでもできすぎて、参考書を追ってもなんだかできてる感が無いなぁ…
学んでる感がないというか、身についてない…
rubyを使って1から何かを作ったほうが良いですね、写経じゃ限界ある。
あとyieldとブロックとProcあたりの概念がよく分からないので要復習だ。
パーフェクトRuby、もちろん一冊するつもりだけど、標準クラスのメソッドとメタプラグラミングのさわりぐらいまでやったらちょっと別の方法も考えようかな~