Ruby에는 다중상속이라는 기능이 없기 때문에 그 것과 비슷한 믹스인이라는 기능이 존재한다.
module M1
def m1_m
p "m1_m"
end
end
module M2
def m2_m
p "m2_m"
end
end
class C
include M1, M2
end
c = C.new()
c.m1_m()
c.m2_m()
믹스인에서는 Class 로는 상속받을 수 없고, module로 상속 받을 수 있다.
따로따로 Module 화
<M1 Module>
module M1
def m1_m
p "m1_m"
end
end
<M2 Module>
module M2
def m2_m
p "m2_m"
end
end
모듈 M1, M2 을 상속받아서 Class C에서는 존재하지 않는 함수 m1_m() 과 m2_m()을 사용할 수 있다.
Class에서 믹스인 하는 법
include M1, M2
include를 통해 믹스인을 하고, 순서에 따라 우선순위가 바뀐다.
MixIn 을 이용해서 계산기 예제 만들어보기
module Multiply
def multiply()
return @v1*@v2
end
end
module Divide
def divide()
return @v1/@v2
end
end
class Cal
include Multiply, Divide
#생성자, constructor
def initialize(v1, v2)
@v1 = v1 # @변수 => 인스턴스 변수 -> instance가 속해있는 모든 method에서 사용가능
@v2 = v2
end
def add()
return @v1+@v2
end
def subtract()
return @v1-@v2
end
end
c = Cal.new(100,10)
p c.add()
p c.multiply()
p c.divide()
class Cal에는 없는 multiply() 과 divide() 기능을 사용하기 위해서 module Multiply 와 module Divide 를 믹스인한다.
따로따로 Module 화
<Multiply module>
module Multiply
def multiply()
return @v1*@v2
end
end
<Divide module>
module Divide
def divide()
return @v1/@v2
end
end
Class Cal에서 믹스인
class Cal
include Multiply, Divide
'IT 공부 > python' 카테고리의 다른 글
2020-10-30 python string 변수안에 특정 문자열 찾기 (0) | 2020.10.30 |
---|---|
2020-10-12 Python 과 Ruby Package Manager (0) | 2020.10.12 |
2020-10-11 Python 과 Ruby 다중상속 (0) | 2020.10.11 |
2020-10-11 Python 과 Ruby 객채의 모듈화 (0) | 2020.10.11 |
2020-10-10 Python 과 Ruby 재정의 OverRide (0) | 2020.10.10 |