Ruby의 모듈

2020-12-16 hit count image

Ruby에서 모듈이란 무엇인지 어떻게 다루는지에 대해서 살펴봅니다.

개요

이번 블로그에서는 Ruby에서 모듈이란 무엇이며, 어떻게 다루는지에 대해서 설명합니다.

모듈

모듈(Module)은 여러개의 처리를 모은 것으로, Module 문을 사용하여 정의합니다.

module ModuleName
...
end

모듈명은 대문자로 시작합니다.

이름 공간

이름 공간(Namespace)은 같은 이름이지만 뜻이 다른 것에 공간명을 붙여서 구별하는 기능을 말합니다. Ruby에서는 모듈을 사용하여 메서드나 정수, 클래스의 이름이 충돌하지 않도록 할 수 있습니다.

모듈안에서 제공하는 정수나 메서드는 다음과 같이 참조할 수 있습니다.

Math::PI
Math.sqrt(2)

모듈안에 정수는 ::으로 참조하며, 함수인 경우 .으로 참조합니다. 같은 모듈의 정수와 함수를 많이 참조하는 경우 아래와 같이 include를 사용하여 참조할 수 있습니다.

include Math

PI
sqrt(2)

모듈 정의

위에서 보았듯이, .을 이용하여 모듈의 함수를 사용할 수 있습니다. 하지만 단순히 모듈에 함수를 정의하는 것만으로는 위와 같이 사용할 수 없습니다.

모듈안에서 정의한 함수를 .을 사용하여 외부에서 사용할 수 있도록 하기 위해서는 module_function을 사용해야 합니다.

module Greeting
  def hello
    puts "Hello"
  end

  module_function :hello
end

Gretting.hello

Mix-in

클래스 정의 안에서 include를 사용하여 모듈을 불러오는 것을 Minx-in이라고 합니다.

module Greeting
  def hello
    puts "Hello"
  end
end

class World
  include Greeting
end

world = World.new
world.hello

완료

이것으로 Ruby에서 모듈을 정의하고 사용하는 방법에 대해서 알아보았습니다. 앞으로 여러개의 처리를 하나로 묶을 필요가 있다면, 모듈을 사용해 보시기 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts