티스토리 뷰

Ruby & Rails

Ruby 처음 배우기 : Module

조묵헌 2018. 5. 11. 12:37

Modules

모듈은 메소드의 컬렉션이라고 할 수 있습니다. 특정 상수와 메서드가 필요할 때에 모듈을 사용할 수 있습니다. 모듈은 메서드와 상수를 namespace로 분리하는 역할을 합니다.

module은 class와 유사해 보이지만, 모듈에는 인스턴스를 만들 수 없으며, 하위 클래스를 만들 수 없습니다.

# 모듈 정의하기
module ModuleName
  CONSTANT_NAME = "Constant value"
end


# 루비 인터프리터 내부에 존재하는 모듈 사용하기
ModuleName::CONSTANT_NAME

# 예시 - Math Module
puts Math::PI
#==> 3.141592653589793


# 모듈에 싱글톤 메서드 정의. 모듈에 self를 붙여서 정의한 메소드
module Food
  # singleton method
  def self.taste
    %w(cherry-tart custard pine-apple).sample
  end

  # 다른 모듈이나 클래스 정의
  module Cookie
  end

  class Mushroom
  end
end

# 싱글톤 메서드 사용하기
Food.taste

# 네임스페이스로 사용하기
Food::Cookie
Food::Mushroom

클래스나 모듈 읽기

# 루비 인터프리터 내부에 존재하지 않는 모듈 불러오기
require 'my_module'

# 예시
# date Module
require 'date'
puts Date.today        #=> 2017-07-06

# 외부파일에 정의된 모듈 불러오기
require './library'        #=> 실행 디렉터리의 library.rb 읽기
require 'library'        #=> $LOAD_PATH에서 library.rb 찾아 읽기

module function

모듈함수란 private 인스턴스 메소드면서 모듈의 싱글톤 메소드인 메소드로, 서브루틴으로 이용할 목적인 메서드는 모듈함수로 정의할 수 있습니다.

# 모듈 함수 정의하기
module MyModule
  module_function
  def my_module_func
    puts "module function"
  end
end

'Ruby & Rails' 카테고리의 다른 글

Ruby 처음 배우기 : 예외  (0) 2018.05.11
Ruby 처음 배우기 : Mixin  (0) 2018.05.11
Ruby 처음 배우기 : 상속  (0) 2018.05.11
Ruby 처음 배우기 : Class  (0) 2018.05.11
Ruby 처음 배우기 : Block & Yield  (0) 2018.05.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함