Hatena::Grouprubyist

Rubyをラクガク(正規表現編) RSSフィード

2006-05-28変数の続き

[]クラス変数 15:51 クラス変数 - Rubyをラクガク(正規表現編) を含むブックマーク はてなブックマーク - クラス変数 - Rubyをラクガク(正規表現編) クラス変数 - Rubyをラクガク(正規表現編) のブックマークコメント

先頭に「@@」が付いた変数クラス変数

class Foo
        @@foo = 1
        def puts_foo
                puts @@foo
                @@foo += 1
        end
end
class Bar < Foo
end

Foo.new.puts_foo
Foo.new.puts_foo
Bar.new.puts_foo
Bar.new.puts_foo
1
2
3
4

クラス変数インスタンス変数と同様にそのクラス(とサブクラス)からのみ参照・代入が可能。

[]グローバル変数 00:11 グローバル変数 - Rubyをラクガク(正規表現編) を含むブックマーク はてなブックマーク - グローバル変数 - Rubyをラクガク(正規表現編) グローバル変数 - Rubyをラクガク(正規表現編) のブックマークコメント

先頭に「$」が付いた変数グローバル変数

・global.rb

$hoge='global variable'

・global_ref.rb

require "global"
puts $hoge
global variable

他のファイルで定義されたグローバル変数も見える(じゃないとグローバルじゃないか)。

[]擬似変数 01:16 擬似変数 - Rubyをラクガク(正規表現編) を含むブックマーク はてなブックマーク - 擬似変数 - Rubyをラクガク(正規表現編) 擬似変数 - Rubyをラクガク(正規表現編) のブックマークコメント

特殊な変数たち。

・self

自分自身を表す変数self。

class Foo
        def puts_self
                puts self
        end
end

class Bar < Foo
end

class Hoge < Foo
        def puts_self
                puts self
        end
end

Foo.new.puts_self
Bar.new.puts_self
Hoge.new.puts_self
#<Foo:0x401c1afc>
#<Bar:0x401c1aac>
#<Hoge:0x401c1a84>

nil

nilNilClassというクラスの唯一のインスタンスということで、メソッドを持ってる。

puts nil.to_a
puts nil.to_f
puts nil.to_i
puts nil.to_s
false
0.0
0

あれ?最後の行は空文字列として、nil.to_aは表示されないのか。空の配列の文字列表現って無いのかな。

p nil?
p nil.to_a
p nil.to_f
p nil.to_i
p nil.to_s
false
[]
0.0
0
""

pを使うと表示された。

true/false

それぞれTrueClassFalseClassの唯一のインスタンス。真偽値もインスタンスかぁ。

・__FILE__

puts __FILE__
puts File.expand_path(__FILE__)
./__file__.rb
/home/hsyd/tmp/ruby/003/__file__.rb

・__LINE__

puts __LINE__
puts __LINE__
puts __LINE__
1
2
3