- Module은 Namespaces를 제공해서 이름이 충돌되는 것을 막아준다.
- 이름은 Mixin 기능을 구현하는 데 사용된다.
모듈의 정의
- 모듈 상수의 이름은 클래스 상수와 같이 첫문자를 대문자로 한다.
- 메서드 선언 또한 비슷.
module Moral
VERY_BAD = 0
BAD = 1def Moral.sin(badness)
return 'Moral sin : '
end
end
module Trig
PI = 3.1415
def Trig.sin(x)
return 'sin value '
enddef Trig.cos(x)
return 'cos value '
endend
require 'trig'
require 'moral'y = Trig.sin(Trig::PI / 4)
print ywrongdoing = Moral.sin(Moral::VERY_BAD)
print wrongdoing
MIX-IN
- Module과 Class는 다르게 움직인다.
- Module에서는 instance를 가질 수 없게 된다.
- Module은 Class가 아닌다.
- Class에서 Module이 포함되게 될 경우에는 Module의 기능을 상속받게 되고, Class의 Instance Method와 동일하게 동작하게 된다.
- include문을 이용해서 Module을 포함 할 수 있다.