タグ

ブックマーク / rubyco.hatenadiary.org (5)

  • 疑問:特異クラスの構文の不思議 - rubyco(るびこ)の日記

    Rubyの特異クラスは以下のように書きます。 class <<obj # ... end ここで、"<< obj"という構文で、特異メソッドを定義するために「objという特定のインスタンスに固有なクラス」を仮想的に指定しています。これが特異クラスです。 ところで、どうして "<< obj"という構文なのだろう? というのが疑問です。いや、もちろんただの構文といえば構文なのですが、ここで不等号をこういう風に使う積極的な理由がよくわからなかったのです。 たとえば、Rubyでは、クラスの継承関係は"Child < Parent"と表現しますね。そうすると、不等号の開いているほうが継承関係でルートに近い。 継承関係と、クラス・インスタンスの関係は別なので、継承関係は "<" で、クラス・インスタンスの関係は "<<" で表現することにすると、"特異クラス << インスタンス" よりも "インスタン

    疑問:特異クラスの構文の不思議 - rubyco(るびこ)の日記
  • フリップフロップ - rubyco(るびこ)の日記

    フリップフロップをRubyでやろうと思ったのですが、何だか汚くなってしまいました。 DATA.each do |s| if /^3/.match(s)../^5/.match(s) puts s end end __END__ 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888

    フリップフロップ - rubyco(るびこ)の日記
    omochist
    omochist 2006/12/23
    なんだこの演算子
  • flattenせずに配列探索 - rubyco(るびこ)の日記

    配列をflattenせずに再帰的に探索するメソッドを書いてみました。でもあまり格好良くありません。 a = [ 1, 2, 3, [4, 5, 6], [7, [8, 9, 10]]] class Array def recurse_find(x) self.each do |item| if item == x return true elsif item.is_a?(Enumerable) if item.recurse_find(x) return true end end end return false end end p a.recurse_find(8) #=> true追記: is_a?ではなくrespond_to?を使った解法をトラックバックしていただきました。 なるほど、Object#respond_to?を使うと、メソッドを持っているかどうかがわかるのですね。で、re

    flattenせずに配列探索 - rubyco(るびこ)の日記
  • Colorize Test::Unit result - rubyco(るびこ)の日記

    http://subtech.g.hatena.ne.jp/youpy/20060818/p1 コンソール版のTestRunnerに色を付ける。コマンドラインなあなたにもグリーンバーを。 ところで、このプログラムを説明するとき、 Term::ANSIColorをmixinし output_singleとoutputをオーバーライドしている というのは正しい説明でしょうか。それとも、 Term::ANSIColorをmixinし output_singleとoutputを再定義している というべきでしょうか? > 誰にともなく 「オーバーライド」と「再定義」の用語の定義の話。『Rubyリファレンスマニュアル』を見ているとオーバーライドという表現は出てきていないようですが。

    Colorize Test::Unit result - rubyco(るびこ)の日記
    omochist
    omochist 2006/08/28
    コマンドラインなあなたにもグリーンバーを.かっちょいい.
  • プログラミング言語の勉強を継続する三つのポイント - rubyco(るびこ)の日記

    「ほほえみつつ、Ruby。」をキャッチフレーズにしてRubyの勉強を続けています。早いもので、今日で96日目(二進法では1100000と切りがよい)、今月末で100日目になります。 継続のポイントといってもcallccの使い方ではありません。勉強を継続する三つのポイント。 【毎日】以前やったことでも、どんなにつまらないことでも、何でもよいから、とにかく毎日やる心意気が大事。 何回かフライング(前日眠る前に明日の分を書いちゃう)はありましたけれど、これまで、毎日更新してきました。そうするとだんだん勉強するのが習慣になってきますね。これはとてもよいことです。今日は勉強する日だっけ、どうだっけと考える必要がない。とにかく毎日、少しでも。 【書く】読むのもよいけれど、どうしても飽きる。書くのがよい。自分で書いて動かして手応えを感じるのが大事。 参考書もいろいろ買って読みました。でも読んでいるだけで

    プログラミング言語の勉強を継続する三つのポイント - rubyco(るびこ)の日記
  • 1