Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

Rubyクラス定義 - Silver/Gold試験対策

p Class.ancestors
#=> [Class, Module, Object, Kernel, BasicObject]
p Class.instance_methods(false)
#=> [:allocate, :new, :superclass]

# クラス名
FirstClass = Class.new

# 無名クラス
klass = Class.new
# クラス名
NamedClass = klass
klass.name #=> NamedClass

# 継承 ちょっと変わった方法
SecondClass = Class.new(FirstClass)
SecondClass.superclass #=> FirstClass

# ブロッグでメソッド定義する方法
klass_obj = nil
ThirdClass = Class.new do |klass|
  klass_obj = klass
  p klass == self
  def hoge
    :hoge
  end
end
ThirdClass == klass_obj

# class定義式では、スコープが定義式内外で変わる
external_scope = 1
NewDefineClass = Class.new do
  puts external_scope
end # => 1
class Hoge
  puts external_scope
end #=> undefined local variable or method `external_scope'

# class名
class Hoge
  p self
end #=> Hoge