Rubyã®moduleã®äœ¿ãæ¹ãšã¡ãªãããçè§£ããŠè±åå¿è ïŒ
Rubyã®æ©èœã§ããmoduleã«ã€ããŠè§£èª¬ããŸããç¹ã«classãšã®éããåãããªãå Žåã¯èªãã§ããããã«ããŸããããåå¿è ã«ããããããããµã³ãã«ãçšããŠããŸãã®ã§ãèªèº«ã§åãããŠã¿ããªã©ããŠåŠç¿ããããšã§çè§£ãåºããããšãã§ããŸããRubyã«ã¯ç¬èªã®æ©èœãããmoduleããã®ãã¡ã®äžã€ã§ããRubyãç¿ãå§ããŠããå Žåã¯moduleã®äœ¿ãæ¹ãšã¡ãªãããçè§£ãããšããããå§ããŠãããŸããããmoduleãšã¯ïŒmoduleã®ã¡ãªãããäœ¿ãæ¹ã解説ããŠãããŸãã
Rubyã®moduleãšã¯ïŒ

moduleã¯æ¥æ¬èªã«ãããšãéšåã®éãŸããããåºåããšããæå³ã«ãªããŸããRubyã®moduleã¯classãšåãããã«moduleå ã«é¢æ°ã®å®çŸ©ãã§ããããšãããã°ã©ã äžã§ã®åœ¹å²ãæ¯ãèãããŸãšããããšãã§ããŸãã
classãšã®éãã¯ïŒ
classãšåããããªã¢ããšåéãããŠããŸããããããŸããããæç¢ºãªéãã2ã€ãããŸãã
1ã€ã¯ãmoduleããã€ã³ã¹ã¿ã³ã¹ãçæã§ããªãããšãããäžã€ã¯ãmoduleã¯ç¶æ¿ã§ããªãããšãæããããŸãã
moduleã䜿ãã¡ãªãã
moduleã䜿ãã¡ãªããã¯4ã€ãããŸãã®ã§ãããããèŠãŠãããŸãããã
åå空éãšããŠã®å©çš
ããšãã°äžèšã®ãããªããã°ã©ã ããã£ããšããŸãã
module Car
class SuperCar
def self.introduce
puts "This is SuperCar"
end
end
end
class SuperCar
def self.introduce
puts "ããã¯ã¹ãŒããŒã«ãŒã§ã"
end
end
Car::SuperCar.introduce
SuperCar.introduce
ãã®ãµã³ãã«ã³ãŒãã§ã¯moduleåãšclassåãååã§ãããã¡ãœããåãååã«ãªã£ãŠããŸãããã®ãµã³ãã«ã³ãŒãã§ã¯åããªãããã«æããŠããŸããããããŸããããmoduleã¯åå空éãšããŠã®åœ¹å²ãæã£ãŠããã®ã§ã³ã³ãã€ã«äžã§ã¯å¥ã®ãã®ãšããŠèªèãããŸãã
äžèšãµã³ãã«ã³ãŒãã®çµæã¯ãThis is SuperCarããããã¯ã¹ãŒããŒã«ãŒã§ãããšè¡šç€ºãããããã«ãªããŸããå€§èŠæš¡ãªããã°ã©ã ãæ§ç¯ããã«ããããååã®ã¡ãœãããåºãŠãããããããŸãããmoduleãåå空éãšããŠå©çšããããšã§è¡çªãé¿ããããããšãã§ããŸãã
ã€ã³ã¹ã¿ã³ã¹ã¡ãœãããšããŠã®å©çš
Rubyç¬èªã®æ©èœã«Mix-inããããŸããMix-inãšã¯classã«moduleã®æ©èœãæ··ãåãããããšãæããŸããMix-inãããããšã§ã¢ãžã¥ãŒã«å ã®ã¡ãœãããã€ã³ã¹ã¿ã³ã¹ã¡ãœãããšããŠå©çšããããšãã§ããã®ã§ããäžèšã®ãµã³ãã«ã³ãŒããèŠãŠã¿ãŸãããã
module Lion
def cryLion
puts "ã¬ãªãŒïŒ"
end
end
module Cat
def cryCat
puts "ãã£ãŒ"
end
end
class Animal
include Lion, Cat
end
obj = Animal.new
obj.cryLion
obj.cryCat
Animalã¯ã©ã¹å ã«ããããã®ã¢ãžã¥ãŒã«ãincludeããããããã®ã¡ãœãããåŒã³åºããããã«ãªããŸãããè€æ°ã®moduleãäžæã«æŽ»çšããããšã§å¹çã®è¯ãããã°ã©ãã³ã°ãå¯èœãšãªããŸãã
extendãšããŠã®å©çš
extendãå©çšããããšã§å®çŸ©ã ãã§ãªããåçãªæ¡åŒµãããããšãå¯èœã§ãã
module Human
def introduce
puts "ç§ã¯äººéã§ã"
end
end
obj = Object.new
obj.extend Human
obj.introduce
空ã®ãªããžã§ã¯ããçæããextendã§æ¡åŒµããŸãããincludeã§ã®æ¡åŒµã¯éçã§ããã®ã«å¯Ÿããåçã«å¯Ÿå¿ã§ããã®ã§ããã°ã©ã ã®æè»æ§ãå¢ããŸãã
ãã§ã«ããmoduleã®å©çš
Rubyã«ã¯ãã§ã«çšæãããŠããmoduleãååšããŸããFileã«é¢ããmoduleã®File::ConstantsãFileTestãæ°åŠé¢æ°ã®ãµããŒããããŠããMathãªã©ããããŸãã
Rubyã®ããŒãžã§ã³ã«ããå·®ç°ã¯ãããŸãããçšæãããŠããmoduleã¯ããã°ã©ã ã®å®å®æ§ã䜿ããããã®ç¹ã«ãããŠåªããŠããŸããèªèº«ã§äœæããæéãçããŸãã®ã§å¹çããéçºãããããšãå¯èœã§ãã
moduleã®äœ¿ãæ¹

ã¡ãªããã®é ç®ã§ãµã³ãã«ã³ãŒããèšè¿°ããŸããããæ¹ããŠmoduleã®äœ¿ãæ¹ã解説ããŠãããŸãã
moduleãäœæ
moduleã®äœæã®ä»æ¹ã¯äžèšãšãªããŸãã
module xxxx
end
xxxxã®éšåã«æå®ã®ã¢ãžã¥ãŒã«åãå ¥ããŠãã ããã颿°ãå ¥ãããå Žåã¯moduleã®å®£èšéšåãšendã®éã«é¢æ°å®çŸ©ãå ¥ããããšã§äœæãããŸãã
moduleã颿°ã®ããã«äœ¿ã
moduleã颿°ã®ããã«äœ¿ãããå Žåã¯äžèšã®ããã«æžãããšã§å¯Ÿå¿ã§ããŸãã
module Calc
def multi(x, y)
return x * y
end
def divide(x, y)
return x / y
end
module_function :multi
module_function :divide
end
puts(Calc.multi(10,5))
puts(Calc.divide(10,5))
çµæã¯ã50ã2ããšç¶ããŠè¡šç€ºãããããã«ãªããŸãããã€ã³ãã¯moduleå
ã«module_function :xxxãšèšå
¥ããããšã§ãã
ããããããšã§ãµã³ãã«ã³ãŒãã®ããã«é¢æ°ãšããŠã®å¯Ÿå¿ãå¯èœãšãªããŸãã
moduleãincludeããŠäœ¿ã
classã«includeããããšã§äœ¿çšããããšãå¯èœã§ãã
module Calc
def multi(x, y)
return x * y
end
def divide(x, y)
return x / y
end
end
class Test
include Calc
end
test = Test.new
puts(test.multi(10,5))
puts(test.divide(10,5))
衚瀺ã¯ã50ã2ããšãªããŸããTestã¯ã©ã¹ã«Calcã¢ãžã¥ãŒã«ãã€ã³ã¯ã«ãŒãããããšã§Calcã¢ãžã¥ãŒã«ã®é¢æ°ã䜿çšããããšãã§ããããã«ãªããŸããã
ã¯ã©ã¹å ã§moduleã䜿ãã«ã¯
ã¯ã©ã¹å ã§ã®moduleã®äœ¿ç𿹿³ã¯äžèšã®ããã«ãªããŸãã
module Calc
def multi(x, y)
return x * y
end
end
class Test
include Calc
def calc(x, y)
puts(multi(x,y))
end
end
test = Test.new
test.calc(10,2)
è¡šç€ºçµæã¯20ãšãªããŸããã¯ã©ã¹å ã§ãmoduleã¯éåžžã®ã³ãŒãã®ããã«äœ¿çšã§ããŸãã®ã§ãæ¯ãèãã«å¿ããŠå¯Ÿå¿ããŠã¿ãŸãããã
Rubyã®moduleãçè§£ããŠå¹çããããã°ã©ã ãæžããïŒ
Rubyã®moduleãçè§£ããããšã§å¹çããããã°ã©ã ãæžããããã«ãªããŸããæ¥åã§ããã䜿ãããããšãããã¡ãªãããäœ¿ãæ¹ãçè§£ããããã«ããŸãããã
ãã®èšäºã®ããŒã¯ãŒãã«é¢ããå匷äŒã»ã€ãã³ããæ¢ã
TECH PLAYã§ã¯ãITãšã³ãžãã¢åãã®å匷äŒã»ã€ãã³ãæ å ±ãæäŸããŠããŸããèå³ã®ããæ¹ã¯ãã²ãåå ãã ããã
- ãRubyãã«é¢ããå匷äŒã»ã€ãã³ããæ¢ã
- ãããã°ã©ãã³ã°ãã«é¢ããå匷äŒã»ã€ãã³ããæ¢ã
- ãåå¿è ãã«é¢ããå匷äŒã»ã€ãã³ããæ¢ã













