初めてのRuby

初めてのRuby復習(4)

クラス名と定数(p144) Durationというクラスの定義式を評価したとき、Rubyは (1)Durationクラスを表すClassクラスのインスタンスを作成し、 (2)そのインスタンスへの参照を値として、Durationという定数式を初期化します Rubyではクラスもオブジェクトであり…

初めてのRuby復習(3)

ローカル変数(p100) ローカル変数はメソッド定義の def ... end を境界としてスコープが分離されます。 Rubyを使いはじめのころよくエラーになりました。 ローカル変数は最初の代入式によって発生します。 定数(p102) Rubyの動的性質は定数への再代入を結局…

初めてのRuby復習(2)

整数リテラル(p45) '_' で数値を区切れるのはとても便利。最近アセンブラで dword のリテラルが見づらくて、コメントで書いてたりするのだけれど、時々ソースにも書いてしまってアセンブルエラーになったりする。他の言語でも導入される嬉しいのだけれど。na…

初めてのRuby復習

たのしいRubyに続いて、初めてのRubyを復習。 この本は読むたび、何らかの気づきがあります。 メタプログラミング(p8) Rubyが動的な言語であるということ。例えば「クラス定義」の中でattr_accessor をイテレータから呼び出し、アクセッサを定義することがで…

まとめ

ほとんどメモ。 1章:ようこそRubyのある生活へ オブジェクト メソッド object_id IDの取得 class classの取得 equal? 同一性の検査 all? 論理積 any? 論理和 より良いPerl 動く擬似コード ALGOLの皮をかぶったLisp 高階関数 ブロックつきメソッド Domain S…

初めてのRuby − 9.6.2 method_missing

わんくまの掲示板で、定義済みのクラスのメンバ関数を、より短い名前で呼ぶようにしたいという質問あり。 class Graphics g { void Image_Load() { } void Image_Draw() { } }; とあってGraphicsクラス内部にクラスor構造体 aImage を設けて aG.aImage.Draw(…

初めてのRuby − 3.2.5 型と自動変換(coerce規約と method_missing を使った四則演算)

coerce 規約 整数と浮動小数点数の演算は自動的に型変換されるが、処理系ハードコードによるものではなく、coerce規約というメカニズムに従うとのこと。 で、適当な自作クラスでの型変換を試してみる。 次のコードで作った coerce メソッドがそれ。 非常に簡…

初めてのRuby − 2.3 Enumerableモジュール

Eumerableモジュール each メソッドを定義して Enumrable を include すれば map などの一連のメソッドが使えるようになる。 class MyClass def initialize @data = [1, 5, 3, 2] end def each @data.each do |d| yield(d) end end include Enumerable # こ…

初めてのRuby

初めてのRuby を読了。 裏表紙に 他の言語のプログラミング経験者が対象 Ruby1.9までカバー とあり、たのしいRuby 第2版 Rubyではじめる気軽なプログラミング でもやもやしていた部分がかなり解消された。プログラミング初心者でなければ、この本から入ると…