class Parent
@@val = 'foo'
def self.say
puts @@val
end
end
class Child < Parent
def say2
puts @@val
end
end
Parent.say
Child.say
Child.new.say2
foo foo foo
@@true = false
(pry):35: warning: class variable access from toplevel
false
class Child
def speak?
@@true
end
end
Child.new.speak?
false
class My
class FooClass
end
end
My.new
#<My:0x007f81e3b3df00>
My::FooClass.new
#<My::FooClass:0x007f81e30eeb30>
class FooClass
end
class BarClass
class FooClass
end
end
p FooClass.new
p BarClass::FooClass.new
#<FooClass:0x007f81e39dbc98> #<BarClass::FooClass:0x007f81e39d8818>
#<BarClass::FooClass:0x007f81e39d8818>
class FooClass::HogeCLass
end
VALUE = 'toplevel'
class Foo
VALUE = 'in Foo class'
def self.value
VALUE
end
end
Foo.value
"in Foo class"
class Foo
def self.top_value
::VALUE
end
end
Foo.top_value
"toplevel"
module Language
def self.lot
%w(ruby python C# VB Perl).sample
end
end
p Language.lot
p Language.lot
"VB" "ruby"
"ruby"
module Language
module LL
end
class Java
end
end
p Language::LL
p Language::Java
Language::LL Language::Java
Language::Java
module Greetable
def greet_to(name)
puts "Hello, #{name}. My name is #{self.class}."
end
end
class Alice
include Greetable
end
alice = Alice.new
alice.greet_to 'Bob'
Hello, Bob. My name is Alice.
class Alice
include Greetable
def greet_to(name)
super
puts 'Nice to meet you!'
end
end
alice = Alice.new
alice.greet_to 'Bob'
Hello, Bob. My name is Alice. Nice to meet you!
class FriendList
include Enumerable
def initialize(*friends)
@friends = friends
end
def each
for v in @friends
yield v
end
end
end
friend_list = FriendList.new('A', 'B', 'C')
p friend_list.count
friend_list.map {|v| v.downcase}
3
["a", "b", "c"]
module ModuleA
def from_a
puts "A"
end
end
module ModuleB
def from_b
puts "B"
end
end
class MyClass
include ModuleA
include ModuleB
end
obj = MyClass.new
obj.from_a
obj.from_b
A B