用語
各種変数・メソッド用語について。
スコープ情報の不足分は後日追記予定。(頭の中整理して書くの疲れるぅ〜。。)
おかしなところ、お気づきな点等ございましたら、
お手数ですがご指導ご指摘、頂けますと幸いです
class A # Aクラス(通常のクラス)
@@class_variable = "クラス変数"
# @class_instance_variable = "クラスインスタンス変数"
# => ここで宣言した場合、「インスタンス変数」ではなく、「クラスインスタンス変数」と見なされる。
# 「インスタンス変数」と同じプレフィックス(@〜)。
def initialize # インスタンスメソッド
@instance_variable = "インスタンス変数"
puts "#{@instance_variable} at initialize"
end
def hoge # インスタンスメソッド
puts "#{@instance_variable} at xxx"
end
def self.fuga # クラスメソッド(定義の方法:特異メソッド方式)
puts "#{@instance_variable} at yyy"
end
class << self # 特異クラス
def fuga # クラスメソッド(定義の方法:特異クラス方式)
puts "#{@instance_variable} at yyy"
end
end
end
# インスタンスメソッドinitializeからはアクセスできる
instance = A.new # => "インスタンス変数 at initialize" # インスタンス生成
instance.hoge # インスタンスメソッド呼び出し
# インスタンス変数は他のインスタンスメソッドでも使える
instance.hoge # => 'インスタンス変数 at xxx'
A.new.hoge # インスタンスメソッド呼び出し(クラス名.new.インスタンスメソッド名)
A.new.hoge # => 'インスタンス変数 at xxx'
A.fuga # クラスメソッド呼び出し
# クラスメソッドからはインスタンス変数(@〜)は使えない
A.fuga # => nil