class FirstClass
end
Class.ancestors
[Class, Module, Object, Kernel, BasicObject]
Class.instance_methods(false)
[:new, :allocate, :superclass]
Class.superclass
Module
FirstClass = Class.new
FirstClass2 = Class.new
<main>: warning: already initialized constant FirstClass
FirstClass2
first_class_instance = FirstClass2.new
first_class_instance.class.name
"FirstClass2"
SecondClass = Class.new(FirstClass)
SecondClass.superclass
FirstClass
klass_object = nil
ThirdClass = Class.new do |klass|
klass_object = klass
klass == self
def hello
:hello
end
end
p klass_object == ThirdClass
p third_class_instance = ThirdClass.new
third_class_instance.hello
true #<ThirdClass:0x00007fb8529740c0>
:hello
tci = klass_object.new
#<ThirdClass:0x00007fb852395230>
tci.hello
:hello
klass = Class.new
p klass.name
nil
obj = klass.new
p obj.class
#<Class:0x00007fb85235d240>
#<Class:0x00007fb85235d240>
NamedClass = klass
klass.name
"NamedClass"
UnknownClass = klass
klass.name
"NamedClass"
UnknownClass.name
"NamedClass"
external_scope = 1
class ExpDefineClass
puts external_scope
end
NameError: undefined local variable or method `external_scope' for ExpDefineClass:Class <main>:3:in `<class:ExpDefineClass>' <main>:2:in `<main>' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:44:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:44:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:12:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:87:in `execute_request' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:47:in `dispatch' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:37:in `run' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:70:in `run_kernel' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:34:in `run' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/bin/iruby:5:in `<top (required)>' /Users/ariga/.rbenv/versions/2.5.1/bin/iruby:23:in `load' /Users/ariga/.rbenv/versions/2.5.1/bin/iruby:23:in `<main>'
NewDefineClass = Class.new do
puts external_scope
end
1
NewDefineClass