タグ

ブックマーク / mirichi.hatenadiary.org (2)

  • Rubyのインスタンス変数について - mirichiの日記

    Rubyの特徴としてよく言われるのは「すべてがオブジェクト」だが、オブジェクトであるならばインスタンス変数を持つことができる。今回はRubyのインスタンス変数についての色々。 インスタンス変数とは Rubyでは「@」ひとつで始まる変数名が自動的にインスタンス変数になる。インスタンス変数はその時点のselfに保存されるので、ローカル変数と違ってコードのどの場所からでも同じselfでさえあれば同じ変数を参照することができる。 通常であればクラスを定義してインスタンスメソッド内で使うことになる。 class Hoge def initialize(fuga) @piyo = fuga end def piyo @piyo end end foo = Hoge.new(1) bar = Hoge.new(2) p foo.piyo #=> 1 p bar.piyo #=> 2 このコードでは@pi

    Rubyのインスタンス変数について - mirichiの日記
    taka222
    taka222 2016/07/08
  • メタプログラミングの基本とか - mirichiの日記

    Rubyはメタプログラミングができる言語だ。 高度なことをしようと思うと特異クラスなどの詳細を知る必要が出てくるが、そういうことをそれなりに知っている人でなければ、特異メソッドぐらいは理解できても特異クラスが出てきた時点でよくわからなくなってしまう。 よくある説明とは違う切り口で説明してみよう。 ちょっと長いが気にしない。 1. まず、Rubyでは先頭が大文字の識別子は定数である。 このルールで最もよく使われるのはクラスやモジュールの名前だろう。 これらは定数である。 class Hoge end p Object.const_get("Hoge").name # => "Hoge" p Object.const_get("Hoge").class # => Class Hogeという定数が定義され、そこにHogeクラスを表すClassオブジェクトが入っているわけだ。 つまり上記の定義は(

    メタプログラミングの基本とか - mirichiの日記
    taka222
    taka222 2010/03/12
  • 1