͕ͯ͢ΦϒδΣΫτ
ϝιουఆٛ
p self # => main
p self.class # => Object
!
def self.my_method
:my_method
end
!
p self.my_method #=> :my_method
# 2.1.0 new feature
m = def my_method
:my_method
end
!
p send(m) #=> :my_method
p self # => main
p self.class # => Object
!
def my_method
:my_method
end
!
p my_method #=> :my_method
Slide 19
Slide 19 text
͕ͯ͢ΦϒδΣΫτ
ϝιουఆٛ
obj = Object.new
!
def obj.my_method
:my_method
end
!
p obj.my_method #=> :my_method
Slide 20
Slide 20 text
͕ͯ͢ΦϒδΣΫτ
Ϋϥεϝιουఆٛ
Foo = Class.new
def Foo.my_class_method
:my_class_method
end
!
p Foo.my_class_method #=> :my_class_method
Slide 21
Slide 21 text
͕ͯ͢ΦϒδΣΫτ
Πϯελϯεϝιουఆٛ
Foo = Class.new
Foo.module_eval do
def my_method
:my_method
end
def my_metho2
:my_metho2
end
end
obj1 = Foo.new
p obj1.my_method #=> :my_method
!
obj2 = Foo.new
p obj2.my_method #=> :my_method
p obj2.my_metho2 #=> :my_metho2
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
͕ͯ͢ΦϒδΣΫτ
Πϯελϯεϝιουఆٛ
class Foo < Object
def my_method
:my_method
end
def my_metho2
:my_metho2
end
def self.my_class_method
:my_class_method
end
end
p Foo.my_class_method #=> :my_class_method
obj1 = MyClass.new
p obj1.my_method #=> :my_method
p obj1.my_metho2 #=> :my_metho2
Slide 24
Slide 24 text
ΦʔϓϯΫϥε
class Foo
def hello(name)
puts "hello #{name}"
end
end
class Foo
def goodbye
puts "goodbye"
end
end
class Foo
def hello(name)
puts "hello #{name} san"
end
end
Foo.new.hello 'rubico'
=> "hello rubico san"
Foo.new.goodbye
=> 'goodbye'
Slide 25
Slide 25 text
MODULE
!
include
prepend (>= 2.0.0)
using (>= 2.1.0)
Slide 26
Slide 26 text
MODULE.INCLUDE
class Foo
def hello(name)
puts "hello #{name}"
end
end
module Goodbye
def goodbye
puts "goodbye"
end
end
class Foo
include Goodbye
end
!
Foo.new.hello name:'rubico'
=> "hello rubico"
Foo.new.goodbye
=> 'goodbye'
Slide 27
Slide 27 text
MODULE.PREPEND
class Foo
def hello(name)
puts "hello #{name}"
end
end
module SanTukero
def hello(name)
super(name + " san")
end
end
class Foo
prepend SanTukero
end
!
Foo.new.hello 'rubico'
=> "hello rubico san"
!
!
Slide 28
Slide 28 text
MODULE.
module Bar
refine Numeric do
def bar
"bar" * self
end
end
end
!
using Bar
puts 5.bar
# ruby 2.1
module Huga
using Bar
puts 5.bar
end
=> "foofoofoofoofoo"
!
!