際際滷

際際滷Share a Scribd company logo
Broslavsky Oleg 
ISCD TSU
束 亟亠仍舒亠亠 include 
仄仂亟仍, 仂弍 
亟仂弍舒于亳 仄亠仂亟 
从亰亠仄仗仍舒 从仍舒舒, 亳 
extend  仂弍 
亟仂弍舒于亳 仄亠仂亟 
从仍舒舒損
仍 亟仂弍于舒 弍亟亠仄 
仆舒亰于舒 仂弍亠从 从仍舒舒, .亠. 
仂弍亠从 仗仂仍亠仆仆亶 仗亳 
仗仂仄仂亳 
ClassName.new 
从亰亠仄仗仍仂仄 亳仍亳 仂弍亠从仂仄 
从仍舒舒 
弌舒仄 亢亠 从仍舒 舒从 亳 弍亟亠仄 
仆舒亰于舒 从仍舒仂仄
丼仂弍 仍亠 仗仂仆 
舒亰仍亳亳 仄亠亢亟 extend 亳 
include, 仆亠仂弍仂亟亳仄仂 
舒亰仂弍舒 于仂 
于亰舒亳仄仂于磶 从仍舒仂于 亳 亳 
从亰亠仄仗仍仂于 于 弍亳 
亰-亰舒 仂仂弍仂亞仂 仆舒亰仆舒亠仆亳 从仍舒仂于 仂亠仆 仍亠亞从仂 仗仂亠 亳亰 于亳亟舒 
仂 舒从, 仂 从仍舒  仂 仂亢亠 仂弍亠从 Ruby
 束仂弍仆損 仂弍亠从仂于 
从仍舒 仂仍亳舒亠 亟于舒 于亠亳: 
仂仆亳 仍亢舒 仂弍舒亰仂仄 
亟仍 仂亰亟舒仆亳 仆仂于 
仂弍亠从仂于 
仂仆亳 磦仍ム 舒 
亳亠舒亳亳 从仍舒仂于 
仍舒仂仄 于亠 从仍舒仂于 (从舒从 仂弍亠从仂于) 于 Ruby 磦仍磳 从仍舒 Class
仂亞亟舒 于 于亰于舒亠亠 仄亠仂亟 
亟仍 从舒从仂亞仂-仂 仂弍亠从舒, 
仆舒舒仍舒 Ruby 亳亠 仂 
仄亠仂亟 于 从仍舒亠 仂弍亠从舒, 
仗仂仂仄 于 亠亞仂 仗亠从仍舒亠 亳 
舒从 亟舒仍亠亠 仗仂 于亠亶 
亳亠舒亳亳 从仍舒仂于 亟仂 
舒仄仂亞仂 仗亠于仂亞仂 从仍舒舒 
弌舒仄仄 仗亠于仄 从仍舒仂仄 于 
Ruby 1.9 磦仍磳 BasicObject.
 仗仂亳从舒 仄亠仂亟舒 亟仍 
从仍舒仂于 舒弍仂舒亠 舒从亢亠. 
弌仆舒舒仍舒 弍亟亠 仗仂仄仂亠仆 
从仍舒 仂弍亠从舒, .亠. 
从仍舒 Class, 亰舒亠仄 仗仂亳从 
仗仂亟仂仍亢亳 于 
仗亠从仍舒亠 Module 亳 舒从 
亟舒仍亠亠 亟仂 BasicObject.
仆仂于仆舒 仆从亳 
从仍舒仂于  仂仗亠亟亠仍 
仗仂于亠亟亠仆亳亠 于仂亳 
从亰亠仄仗仍仂于. 亟仆舒从仂 于 
Ruby 仄 仄仂亢亠仄 
亟仂弍舒于仍 仆亳从舒仍仆仂亠 
仗仂于亠亟亠仆亳亠 仂亟亠仍仆仄 
仂弍亠从舒仄. 
snoopy = Dog.new 
def snoopy.alter_ego 
丼舒亠 于亠亞仂 舒从亳亠 仄亠仂亟 仆舒亰于舒ム 
亳仆亞仍仂仆-仄亠仂亟舒仄亳, 仗仂仂仄 仂 仂仆亳 
仗亳仆舒亟仍亠亢舒 仂仍从仂 仂亟仆仂仄 
亠亟亳仆于亠仆仆仂仄 仂弍亠从. 
"Red Baron" 
end 
snoopy.alter_ego 
# => "Red Baron" 
fido.alter_ego 
# => NoMethodError: undefined method
弍亳亶 仗 仗仂亳从舒 
仄亠仂亟舒 仆亠 仆舒舒亠! 
弌仂亰亟舒亠 舒仆仂仆亳仄仆亶 
从仍舒, 仂弍 舒亰仄亠亳 于 
仆亠仄 亳仆亞仍仂仆-仄亠仂亟 
仂弍亠从舒. 舒亠仄 仂 
舒仆仂仆亳仄仆亶 从仍舒 
舒仆仂于亳 仗亠从仍舒仂仄 
仂弍亠从舒, 舒 从仍舒 仂弍亠从舒 
舒仆仂于亳 仗亠从仍舒仂仄 
舒仆仂仆亳仄仆仂亞仂 从仍舒舒. 
丕 仂亞仂 亟亳仆舒仄亳亠从亳 仂亰亟舒于舒亠仄仂亞仂 舒仆仂仆亳仄仆仂亞仂 从仍舒舒 仄仆仂亞仂 仆舒亰于舒仆亳亶: 
仄亠舒从仍舒, 从仍舒-仂亠仂仍 (ghost), 亳仆亞仍仂仆-从仍舒 亳 舒亶亞亠仆从仍舒 (eigenclass)
snoopy = Dog.new 
def snoopy.alter_ego 
"Red Baron" 
end 
class << snoopy 
def alter_ego 
"Red Baron" 
end 
end 
仂仆从亳 束class <<損 
仂从于舒亠 仄亠舒从仍舒 
仍ミ頴笑覚 仂弍亠从舒, 从仂仂亶 
于 从舒亢亳亠, 亳 亟舒亠 于舒仄 
于仂亰仄仂亢仆仂 舒弍仂舒 
仆亠仗仂亠亟于亠仆仆仂 于仆亳 
仂弍仍舒亳 于亳亟亳仄仂亳 仂亞仂 
仄亠舒从仍舒舒.
class << Dog 
def closest_relative 
wolf" 
end 
end 
亊于仍 仂弍亠从舒仄亳, 
从仍舒 仂亢亠 仄仂亞 亳仄亠 
亳仆亞仍仂仆-仄亠仂亟. 
亠仂亟 从仍舒舒 仆舒 舒仄仂仄 
亟亠仍亠 磦仍磳 仆亳亠仄 
亳仆仄 从舒从 亳仆亞仍仂仆- 
仄亠仂亟舒仄亳. 舒从 亳 仍ミ英亠 
亳仆亞仍仂仆-仄亠仂亟, 仂仆亳 
舒仗仂仍舒亞舒ム 于仆亳 
Dog 
仄亠舒从仍舒舒 bark() 
Dogs eigenclass 
closest_relative()
class Dog 
class << self 
def closest_relative 
wolf" 
end 
end 
end 
class Dog 
def closest_relative 
wolf" 
end 
end 
class Dog 
def self.closest_relative 
wolf" 
end 
end 
def Dog.closest_relative 
wolf" 
end
仂 舒从 仗仂仂 于亞仍磲亳 
仗仂仍仆亶 仗 仗仂亳从舒 
仄亠仂亟舒 仂弍亠从舒 :)
丐亠仗亠, 从仂亞亟舒 仄 
舒亰仂弍舒仍亳 仂 
从仂亶 从仍舒仂于 于 
Ruby, 亟仂于仂仍仆仂 仗仂仂 
仗仂仆 于 亠仄 亢亠 于-舒从亳 
舒亰仆亳舒 仄亠亢亟 extend 亳 
include
仂亞亟舒 仄 
亟亠仍舒亠仄 include 仄仂亟仍 于 
仂弍亠从, 仄 亟仂弍舒于仍磳仄 
仄亠仂亟 仄仂亟仍 于 亠仗 
仆舒仍亠亟仂于舒仆亳 仂弍亠从舒 
 
FunnyTail 
Dog 
bark() 
Dogs eigenclass 
closest_relative() 
do_trick() 
Dog.ancestors 
# => [Dog, FunnyTail, Object, 
Kernel, BasicObject]
Dog 
bark() 
 
FunnyTail 
do_trick() 
Dogs eigenclass 
closest_relative() 
Extend  仂 仂亢亠 舒仄仂亠, 
仂 亟亠仍舒 include, 仆仂 亟仍 
亳仆亞仍仂仆-从仍舒舒 仂弍亠从舒 
Dog.singleton_class.ancestors 
# => [FunnyTail, Class, Module, 
Object, Kernel, BasicObject]
舒亢亟亶 于亰仂于 include 
仗仂于亠磳 仗仂亟从仍ム舒亠仄亶 
仄仂亟仍 仆舒 仆舒仍亳亳亠 仄亠仂亟舒 
included. 亅仂 仄亠仂亟 
亳仗仂仍仆磳, 从仂亞亟舒 仄仂亟仍 
仗仂亟从仍ム舒亠, 亳仗仂仍亰 
include. 亞仂 仄仂亢仆仂 
亳仗仂仍亰仂于舒, 从仂亞亟舒 仆亢仆仂 
亟仂弍舒于亳 舒亰 亳 仄亠仂亟 
从仍舒舒 亳 仄亠仂亟 从亰亠仄仗仍舒 
从仍舒舒 
module FunnyTail 
def self.included(base) 
base.extend( 
FunnyTail.singleton_class) 
end 
 
end 
丕 extend 亟仍 亳 亠仍亠亶 亠 
仂弍于亠仆仆亶 仄亠仂亟  extended
include  亟仂弍舒于仍磳 仄亠仂亟 仄仂亟仍 仂弍亠从. 
extend  于亰于舒亠 include 亟仍 亳仆亞仍仂仆-从仍舒舒 
仂弍亠从舒. 
束弌仂亳 仗仂仆 
亠舒仍亳亰舒亳 仍亠亢舒 于 
仂仆仂于亠 亳 于亠 舒亰 
仂弍亠舒亠 仄仍損
仆亳从舒亠仄 于 仄亠舒从仍舒 Ruby 
http://habrahabr.ru/post/143990/ 
仆亳从舒亠仄 于 include 亳 extend 
http://habrahabr.ru/post/143483/
Oleg Broslavsky 
ovbroslavsky@gmail.com 
@yalegko

More Related Content

Include and extend in Ruby

  • 2. 束 亟亠仍舒亠亠 include 仄仂亟仍, 仂弍 亟仂弍舒于亳 仄亠仂亟 从亰亠仄仗仍舒 从仍舒舒, 亳 extend 仂弍 亟仂弍舒于亳 仄亠仂亟 从仍舒舒損
  • 3. 仍 亟仂弍于舒 弍亟亠仄 仆舒亰于舒 仂弍亠从 从仍舒舒, .亠. 仂弍亠从 仗仂仍亠仆仆亶 仗亳 仗仂仄仂亳 ClassName.new 从亰亠仄仗仍仂仄 亳仍亳 仂弍亠从仂仄 从仍舒舒 弌舒仄 亢亠 从仍舒 舒从 亳 弍亟亠仄 仆舒亰于舒 从仍舒仂仄
  • 4. 丼仂弍 仍亠 仗仂仆 舒亰仍亳亳 仄亠亢亟 extend 亳 include, 仆亠仂弍仂亟亳仄仂 舒亰仂弍舒 于仂 于亰舒亳仄仂于磶 从仍舒仂于 亳 亳 从亰亠仄仗仍仂于 于 弍亳 亰-亰舒 仂仂弍仂亞仂 仆舒亰仆舒亠仆亳 从仍舒仂于 仂亠仆 仍亠亞从仂 仗仂亠 亳亰 于亳亟舒 仂 舒从, 仂 从仍舒 仂 仂亢亠 仂弍亠从 Ruby
  • 5. 束仂弍仆損 仂弍亠从仂于 从仍舒 仂仍亳舒亠 亟于舒 于亠亳: 仂仆亳 仍亢舒 仂弍舒亰仂仄 亟仍 仂亰亟舒仆亳 仆仂于 仂弍亠从仂于 仂仆亳 磦仍ム 舒 亳亠舒亳亳 从仍舒仂于 仍舒仂仄 于亠 从仍舒仂于 (从舒从 仂弍亠从仂于) 于 Ruby 磦仍磳 从仍舒 Class
  • 6. 仂亞亟舒 于 于亰于舒亠亠 仄亠仂亟 亟仍 从舒从仂亞仂-仂 仂弍亠从舒, 仆舒舒仍舒 Ruby 亳亠 仂 仄亠仂亟 于 从仍舒亠 仂弍亠从舒, 仗仂仂仄 于 亠亞仂 仗亠从仍舒亠 亳 舒从 亟舒仍亠亠 仗仂 于亠亶 亳亠舒亳亳 从仍舒仂于 亟仂 舒仄仂亞仂 仗亠于仂亞仂 从仍舒舒 弌舒仄仄 仗亠于仄 从仍舒仂仄 于 Ruby 1.9 磦仍磳 BasicObject.
  • 7. 仗仂亳从舒 仄亠仂亟舒 亟仍 从仍舒仂于 舒弍仂舒亠 舒从亢亠. 弌仆舒舒仍舒 弍亟亠 仗仂仄仂亠仆 从仍舒 仂弍亠从舒, .亠. 从仍舒 Class, 亰舒亠仄 仗仂亳从 仗仂亟仂仍亢亳 于 仗亠从仍舒亠 Module 亳 舒从 亟舒仍亠亠 亟仂 BasicObject.
  • 8. 仆仂于仆舒 仆从亳 从仍舒仂于 仂仗亠亟亠仍 仗仂于亠亟亠仆亳亠 于仂亳 从亰亠仄仗仍仂于. 亟仆舒从仂 于 Ruby 仄 仄仂亢亠仄 亟仂弍舒于仍 仆亳从舒仍仆仂亠 仗仂于亠亟亠仆亳亠 仂亟亠仍仆仄 仂弍亠从舒仄. snoopy = Dog.new def snoopy.alter_ego 丼舒亠 于亠亞仂 舒从亳亠 仄亠仂亟 仆舒亰于舒ム 亳仆亞仍仂仆-仄亠仂亟舒仄亳, 仗仂仂仄 仂 仂仆亳 仗亳仆舒亟仍亠亢舒 仂仍从仂 仂亟仆仂仄 亠亟亳仆于亠仆仆仂仄 仂弍亠从. "Red Baron" end snoopy.alter_ego # => "Red Baron" fido.alter_ego # => NoMethodError: undefined method
  • 9. 弍亳亶 仗 仗仂亳从舒 仄亠仂亟舒 仆亠 仆舒舒亠! 弌仂亰亟舒亠 舒仆仂仆亳仄仆亶 从仍舒, 仂弍 舒亰仄亠亳 于 仆亠仄 亳仆亞仍仂仆-仄亠仂亟 仂弍亠从舒. 舒亠仄 仂 舒仆仂仆亳仄仆亶 从仍舒 舒仆仂于亳 仗亠从仍舒仂仄 仂弍亠从舒, 舒 从仍舒 仂弍亠从舒 舒仆仂于亳 仗亠从仍舒仂仄 舒仆仂仆亳仄仆仂亞仂 从仍舒舒. 丕 仂亞仂 亟亳仆舒仄亳亠从亳 仂亰亟舒于舒亠仄仂亞仂 舒仆仂仆亳仄仆仂亞仂 从仍舒舒 仄仆仂亞仂 仆舒亰于舒仆亳亶: 仄亠舒从仍舒, 从仍舒-仂亠仂仍 (ghost), 亳仆亞仍仂仆-从仍舒 亳 舒亶亞亠仆从仍舒 (eigenclass)
  • 10. snoopy = Dog.new def snoopy.alter_ego "Red Baron" end class << snoopy def alter_ego "Red Baron" end end 仂仆从亳 束class <<損 仂从于舒亠 仄亠舒从仍舒 仍ミ頴笑覚 仂弍亠从舒, 从仂仂亶 于 从舒亢亳亠, 亳 亟舒亠 于舒仄 于仂亰仄仂亢仆仂 舒弍仂舒 仆亠仗仂亠亟于亠仆仆仂 于仆亳 仂弍仍舒亳 于亳亟亳仄仂亳 仂亞仂 仄亠舒从仍舒舒.
  • 11. class << Dog def closest_relative wolf" end end 亊于仍 仂弍亠从舒仄亳, 从仍舒 仂亢亠 仄仂亞 亳仄亠 亳仆亞仍仂仆-仄亠仂亟. 亠仂亟 从仍舒舒 仆舒 舒仄仂仄 亟亠仍亠 磦仍磳 仆亳亠仄 亳仆仄 从舒从 亳仆亞仍仂仆- 仄亠仂亟舒仄亳. 舒从 亳 仍ミ英亠 亳仆亞仍仂仆-仄亠仂亟, 仂仆亳 舒仗仂仍舒亞舒ム 于仆亳 Dog 仄亠舒从仍舒舒 bark() Dogs eigenclass closest_relative()
  • 12. class Dog class << self def closest_relative wolf" end end end class Dog def closest_relative wolf" end end class Dog def self.closest_relative wolf" end end def Dog.closest_relative wolf" end
  • 13. 仂 舒从 仗仂仂 于亞仍磲亳 仗仂仍仆亶 仗 仗仂亳从舒 仄亠仂亟舒 仂弍亠从舒 :)
  • 14. 丐亠仗亠, 从仂亞亟舒 仄 舒亰仂弍舒仍亳 仂 从仂亶 从仍舒仂于 于 Ruby, 亟仂于仂仍仆仂 仗仂仂 仗仂仆 于 亠仄 亢亠 于-舒从亳 舒亰仆亳舒 仄亠亢亟 extend 亳 include
  • 15. 仂亞亟舒 仄 亟亠仍舒亠仄 include 仄仂亟仍 于 仂弍亠从, 仄 亟仂弍舒于仍磳仄 仄亠仂亟 仄仂亟仍 于 亠仗 仆舒仍亠亟仂于舒仆亳 仂弍亠从舒 FunnyTail Dog bark() Dogs eigenclass closest_relative() do_trick() Dog.ancestors # => [Dog, FunnyTail, Object, Kernel, BasicObject]
  • 16. Dog bark() FunnyTail do_trick() Dogs eigenclass closest_relative() Extend 仂 仂亢亠 舒仄仂亠, 仂 亟亠仍舒 include, 仆仂 亟仍 亳仆亞仍仂仆-从仍舒舒 仂弍亠从舒 Dog.singleton_class.ancestors # => [FunnyTail, Class, Module, Object, Kernel, BasicObject]
  • 17. 舒亢亟亶 于亰仂于 include 仗仂于亠磳 仗仂亟从仍ム舒亠仄亶 仄仂亟仍 仆舒 仆舒仍亳亳亠 仄亠仂亟舒 included. 亅仂 仄亠仂亟 亳仗仂仍仆磳, 从仂亞亟舒 仄仂亟仍 仗仂亟从仍ム舒亠, 亳仗仂仍亰 include. 亞仂 仄仂亢仆仂 亳仗仂仍亰仂于舒, 从仂亞亟舒 仆亢仆仂 亟仂弍舒于亳 舒亰 亳 仄亠仂亟 从仍舒舒 亳 仄亠仂亟 从亰亠仄仗仍舒 从仍舒舒 module FunnyTail def self.included(base) base.extend( FunnyTail.singleton_class) end end 丕 extend 亟仍 亳 亠仍亠亶 亠 仂弍于亠仆仆亶 仄亠仂亟 extended
  • 18. include 亟仂弍舒于仍磳 仄亠仂亟 仄仂亟仍 仂弍亠从. extend 于亰于舒亠 include 亟仍 亳仆亞仍仂仆-从仍舒舒 仂弍亠从舒. 束弌仂亳 仗仂仆 亠舒仍亳亰舒亳 仍亠亢舒 于 仂仆仂于亠 亳 于亠 舒亰 仂弍亠舒亠 仄仍損
  • 19. 仆亳从舒亠仄 于 仄亠舒从仍舒 Ruby http://habrahabr.ru/post/143990/ 仆亳从舒亠仄 于 include 亳 extend http://habrahabr.ru/post/143483/