class Klass
p(self)
end
Klass
Klass
class Klass
@class_instance_val = :class_instance_val
end
:class_instance_val
class Klass
@class_instance_val = :class_instance_val
def self.class_instance_val
@class_instance_val
end
end
Klass.class_instance_val
:class_instance_val
クラス変数/クラスインスタンス変数
class Klass
@class_instance_val = :class_instance_val
@@class_val = :class_val
def instance_method
p(@class_instance_val)
@@class_val
end
end
:instance_method
Klass.new.instance_method
nil
:class_val
class Klass
@class_instance_val = :class_instance_val
def instance_method
p(p(self).class).instance_variable_get :@class_instance_val
end
end
:instance_method
Klass.new.instance_method
#<Klass:0x00007fab3b0dd0e8> Klass
:class_instance_val
Klass.instance_variable_get(:@class_instance_val)
:class_instance_val
Klass.instance_variables
[:@class_instance_val]
class Klass
@class_instance_val = :class_instance_val
@@class_val = :class_val
end
class InheritKlass < Klass
p(@class_instance_val)
p(@@class_val)
end
nil :class_val
:class_val
class InstanceCountClass
@@instance_count = 0
def self.instance_count
@@instance_count
end
def initialize
@@instance_count +=1
end
end
p(InstanceCountClass.instance_count)
5.times do
InstanceCountClass.new
end
InstanceCountClass.instance_count
0
5
class NewInstanceCountClass < InstanceCountClass
end
p(NewInstanceCountClass.instance_count)
5.times do
NewInstanceCountClass.new
end
p(InstanceCountClass.instance_count)
NewInstanceCountClass.instance_count
10
10
class InstanceCountClass
@instance_count = 0
def self.instance_count_up
@instance_count += 1 if @instance_count
end
def self.instance_count
@instance_count
end
def initialize
self.class.instance_count_up
end
end
5.times do
InstanceCountClass.new
end
InstanceCountClass.instance_count
5
class NewInstanceCountClass < InstanceCountClass
end
p(NewInstanceCountClass.instance_count)
5.times do
NewInstanceCountClass.new
end
p(InstanceCountClass.instance_count)
NewInstanceCountClass.instance_count
nil 5
class NewInstanceCountClass2 < InstanceCountClass
@instance_count = 0
end
0
p(NewInstanceCountClass2.instance_count)
5.times do
NewInstanceCountClass2.new
end
NewInstanceCountClass2.instance_count
0
5
Tips: Smalltalkにもクラスインスタンス変数は存在する
次回 6-2-3 クラスメソッド