第6回 変数と定数と、たまにクラス

 2008-05-03
ついに6回目~
がんばってますね~。

今回は、変数と定数の有効範囲ついてです。

※ 10月7日 訂正


では、有効範囲の小さい変数から説明していきます。

1.ローカル変数
定義した場所でのみ有効な変数です。
クラス間やメソッド間を行き来できません。
var = 1
def method
 p var
end
method # => ERROR

1.インスタンス変数
定義したインスタンスでのみ有効です。
定義したクラス内ならどこからでも参照できます。
継承しても値を受け継ぎます。
class Hoge
 def initialize
  @var = 1
 end
 def method
  p @var
 end
end
a = Hoge.new
a.method # => 1

class Piyo < Hoge
 def method
  p @var
 end
end
b = Piyo.new
b.method # => 1

3.クラス変数
インスタンス変数の範囲に加えて
インスタンスを無視して、同じクラスで共有する事ができます。
class Hoge
 def initialize
  @@var = 1
 end
 def method
  p @@var
 end
 def var=(val)
  @@var = val
 end
end
a = Hoge.new
b = Hoge.new
a.method # => 1
b.var = 3
a.method # => 3
b.method # => 3

4.グローバル変数
どこからでも参照可能な変数です。
むやみに使用するものではありません。
$var = 1


次に定数を説明します。

定数は、どこからでも参照できます。
しかし、クラス内で定数を定義すると、そのクラスと継承先でのみ参照可能なクラス定数になります。
また、メソッド内では定義できません。
CON = 1
class Constant
CLASS = 1
end
p CLASS   # => ERROR

コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/53-0ad521ec
≪ トップページへこのページの先頭へ  ≫
カレンダー
01 << 2017/02 >> 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -

カテゴリー
最近の記事
02/14 お返事
01/21 お返事
01/12 更新情報
11/28 お返事
08/08 お返事

最近のコメント
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事
02/24 お返事

タグクラウド

リンク