자본 엄.슴.
Ruby 모듈 본문
모듈
루비에는 클래스랑 비슷한 모듈이라는 것이 있다. 모듈은 클래스와 비슷하지만 인스턴스를 만들 수 없고 상속이 불가능하다는 점에서 차이가 있다. 그래서 네임스페이스를 만들거나 모듈의 메서드로 클래스 또는 인스턴스의 메서드를 정의할 때 사용한다. 모듈을 정의할 때는 module 키워드를 사용한다.
module Trig
PI = 3.141592654
def Trig.sin(x)
# ..
end
def Trig.cos(x)
# ..
end
end
Trig.sin 5
모듈의 메서드는 모듈이름.메서드이름 형태로 호출할 수 있다. 모듈 상수는 모듈이름:상수이름 형태로 사용한다.
믹스인 (Mixin)
자바를 공부할 때도 느꼈던 것이지만 많은 객체 지향 언어들이 다중 상속을 지원하지 않는 것 같다. 이것은 루비도 마찬가지인데, 루비는 믹스인이라는 기능으로 다중 상속을 대체할 수 있다. 믹스인이란 클래스 선언에 모듈을 포함(include) 하는 것인데 말 그대로 mix in 된다. 클래스가 모듈을 포함하면 원래 자기 메서드인 양 사용이 가능하다.
class HumanList
include Enumerable
def initialize(*humans)
@humans = humans
end
def each
for value in @humans
yield value
end
end
end
human_list = HumanList.new("Kim", "Lee", "NoYE")
puts human_list.count
결과
3
이 예제는 Enumerable이라는 모듈을 포함한 Human클래스로 무엇을 할 수 있는지 알려준다. 예제를 보면 each 메서드가 정의되어 있는데 Enumerable을 포함하고 each 메서드를 정의하면 반복 메서드를 사용할 수 있다.
'Ruby' 카테고리의 다른 글
Ruby 문자열 (0) | 2019.02.06 |
---|---|
Ruby 객체(2) (0) | 2019.02.02 |
Ruby 싱글톤 메서드 (0) | 2019.01.30 |
Ruby 접근 제어자, 상속 (0) | 2018.12.11 |
Ruby 클래스, 객체 (0) | 2018.12.10 |
Comments