Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

자본 엄.슴.

Ruby 모듈 본문

Ruby

Ruby 모듈

자본없음 2019. 1. 31. 22:01

모듈

루비에는 클래스랑 비슷한 모듈이라는 것이 있다. 모듈은 클래스와 비슷하지만 인스턴스를 만들 수 없고 상속이 불가능하다는 점에서 차이가 있다. 그래서 네임스페이스를 만들거나 모듈의 메서드로 클래스 또는 인스턴스의 메서드를 정의할 때 사용한다. 모듈을 정의할 때는 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