Rubyまるごと学習ブック2日目。
昨日の続きでメモ。P36〜P67
・#!ruby -Ks(シフトJIS。-KuでUTF-8、-KeでEUC)
・jcodeライブラリ。jsizeやeach_charなど。 require 'jcode'
・文字列操作のメソッド。gsub, inxlude?, size, index, upcase, downcase, strip, split, nextなど。(Stringクラスという意味だと思う。)
・nextメソッドはExcel操作で良いということなので、職場で使ってみる。
・ダブルクォートとシングルクォートの違い。ダブルはバックスラッシュ記法が使えて、式展開も有効になる。
・sum += line.split("¥").last.split("円").first.to_i
金額を加算していく。
・data_array = str.scan(/¥\d+円/)
"¥"で始まり、数字が0個以上続いて最後に"円"がある行を格納する。
・injectについて曖昧なので後で調べる。
・正規表現。34,443,009などにマッチするのは、[1-9]\d{0,2}(,\d{3,3})*
→0以外の数字があり、次に0〜2ケタの数字があり、次に0回以上(カンマ+数字3ケタ)があること。
P51で「入門編」が終わり、ここからは「実践編」となっている。
・Rubyのクラスとは「抽象データ型に関数を持たせたもの」と解説がある。
抽象データ型は「適用可能な操作によってデータ型を定義する手法」ともある。
私の中では「(いくつかの)値とそれに関わる動作を、まとめて一つに括ったもの」のようなイメージだ。
もちろん前提として、現実世界のオブジェクトと対になるべきだ。その粒度はケースによるが。
・attr_accesoor, attr_reader, attr_writerはわかりやすい。他の言語は運用でやってるようなものだから。
・@をつけたフィールド(変数)はオブジェクトに紐付く。(インスタンス変数)
・@@をつけたフィールドはクラス変数。(どのインスタンスでも参照が同じということか?後で調べる。)
・クラス・メソッドの定義は def self.set_unitなど、self.を使う。
・P61が深い。 -1.abs と Math.abs(-1) の違いについて。(それぞれ、RubyとJava)
・P63 Stringはグローバル変数となっているが、同時に定数とみなされる。このため、安心して呼び出せるというわけだ。
・素数は古くから研究されていて(略)→プログラミングと数学は切れないと私は思う。
・続きが気になるけど眠い。
ここまで読んで、本書の特徴がつかめたつもりだが、これは「入門書」ではあるが「言語の説明」とは少々違う、ゆるいものだ。
その代り、物語だ。
この物語はすばらしい。
謎解き要素があり、読む人によっては笑いもある。
言語の詳細まで説明していないし、しっかりとした分類の上で説明してるわけでもない。
しかし、私はプログラム初心者にはこれを薦めたい。
素晴らしい。
明日で読み切るつもりだが、まとめはしっかり書こう。