C言語と違うところ4
- 変数とスコープ
「スコープ」⇒ 変数が有効な範囲
これは分かる気がする(・ω・)
$var = 10 # $マークをつける def sample p $var #=> 10 end p $var #=> 10
-
- インスタンス変数
インスタンス変数とは、
クラスから生成されたインスタンス(オブジェクト)毎に
別の値を持つことができる変数。
class Sample def initialize(width = 100, height = 100) # 初期化メソッド定義 @width = width @height = height end attr_accessor :width, :height # インスタンス変数を外から参照・代入できるように end sample = Sample.new(150, 250) p sample.width #=> 150 p sample.height #=> 250
-
- クラス変数
クラス変数は、
そのクラスの全てのインスタンスで共有される変数。
class Sample @@cvar = 0 def initialize(width = 100, height = 100) @width = width @height = height end def cvar; @@cvar; end def cvar=(x); @@cvar = x; end attr_accessor :width, :height end sample = Sample.new(150, 250) sample.cvar = 300 sample1 = Sample.new(10, 20) p sample.width #=> 150 p sample1.width #=> 10 p sample.cvar #=> 300 p sample1.cvar #=> 300⇒クラス変数なのでsample1のcavrメソッドも300を返す
-
- ローカル変数
ローカル変数は、
メソッド内などの特定の範囲でのみ使用される変数
var = 0 class Sample def initialize var = 1 # このvarは上のとは別もの end end Sample.new p var #=> 0