ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Function과 Module
    Elixir 프로그래밍 2019. 7. 29. 09:52

    Module과 Function

     

    Module은 Function의 그룹 입니다.  OOP의 Method 등의 개념이 들어가지 않은 단순 Function의 모임이 Module 입니다.

     

    사실, Module 내에는 관련 있는 Function의 모음을 만들건 그렇지 않건 상관없습니다. Module은 그저 Function들의 모임입니다. 

     

    Elixir 프로그램에는 많은 수의 함수들이 있을수 있으며, 이들 함수들을 하나의 집합으로 만들어주는 것이 모듈입니다. 

    어찌 보면, 함수들의 Name Scope를 정해주는 정도로 생각할 수 있습니다. 

    앞글에 적었듯이 Elixir에는 객체의 개념이 없으므로 당연히 Module의 상속 개념도 없습니다 Module은 그저 함수들의 묶음입니다. 

     

    그리고, Module의 이름은 영대문자로 시작하면 됩니다.   모듈내의 함수의 이름은 영소문자로 시작하는 단어를 사용합니다. 모듈의 이름은 "." 문자로 구분되는 영대문자로 시작하는 단어이면 됩니다.  모듈의 이름에서 "." 문자로 구분되는  영소문자는 사용하면 안됩니다.   

     

    이때 "."는 단지 단어를 구분하는 문자로만 생각하면 됩니다.  Java의 package 개념과는 다릅니다. Module의 이름에 "." 문자가 들어가 있다고 해당하는 이름의 폴더 구조를 따라야 하는 것은 아닙니다.

     

    사실, 아래와 같이 모듈의 이름과 함수의 이름을 한글로도 사용할 수 있습니다.  함수의 이름과 모듈의 이름은 앞장에서 기술한 애텀을 이용하기 때문입니다. 

    심지어는 함수의 이름을 :+ 와 같이 연산자를 사용하는 것도 가능합니다. 

     

     

    하지만, 그냥 편하게 다음의 Rule을 따르면 됩니다. 

    • 모듈의 이름은 "." 로 구분된 영어 대문자로 시작하는 단어이다. 
    • 함수의 이름은 영어 소문자로 시작하는 단어이다. 

    Module을 정의한 파일의 확장자는 ex 입니다.

     

    그리고, 위의 코드 예와 같이 하나의 ex 파일에 복수개의 모듈을 정의하는 것도 가능합니다. 

     

    iex 에서 모듈의 컴파일과 실행하기 

    앞의 글에서 적었듯이, iex 는 강력한 툴입니다.   Elixir 소스 파일을 컴파일하고, 실행할 수 있으며  , 프로젝트 관리도 할 수 있습니다.

    우선, 지금은 모듈 파일을 컴파일하여 실행하는 방법을 적겠습니다.

     

    iex 로 프로젝트를 컴파일하여 실행하는 방법은 나중에 적도록하고, 우선은 하나의 모듈을 컴파일하고 실행하는 방법을 적도록 하겠습니다. 

     

    위의 코드를 예로 설명들겠습니다. 

    위의 코드를 저장한 파일을 "mod_func.ex" 라고 할때 컴파일하고 , 실행하는 방법은 다음과 같습니다. 

    • 소스파일 "mod_func.ex"이 있는 폴더에서 iex를 실행시킨다.
    • c "mod_func.ex"   =>   파일을 컴파일하고 실행할 수 있도록 메모리에 탑재합니다.
    • Calc.Module.add(1,2) =>   "Calc.Module"라는 모듈의 "add"라는 함수를 실행시킨다. 

     

    소스코드를 수정한 후 이를 실행하려면,  c "mod_func.ex"를 하면, 코드를 다시 컴파일하면 됩니다. 

     

    iex 에는 c 는 compile의 약자로 파라미터로 주어진 파일을 컴파일 한 후 load 하는 기능을 수행합니다. 

    c 를 한번 더 하면, 

    와 같이 Warning 메세지가 나오는데, 이는 이미 탑재되어 있는 모듈을 다시 덮어쓴다는 내용으로 무시하셔도 됩니다.

     

    iex를 실행시킨 폴더에 다른 소스파일 ".ex" 가 있다면,  그 파일도 c 명령으로 컴파일하여 메모리에 탑재하고 실행시킬 수 있습니다. 

     

    그리고, iex 는  linux의 shell 처럼 , 처음의 몇글자만 치고, TAB 키를 치면 후보군을 보여주어 입력을 편하게 해줍니다. 

     

    위의 함수를 실행할때  Calc.Moodule을 다 입력하지 말고 "Ca" 까지만 입력하고 TAB 키를 쳐보시면 이해가 되실 겁니다. 

     

     

    이후의 글에서는 실제 수행을 해봐야하는 코드들이 자주 나올것이기 때문에, 이번 글에서는 모듈을 컴파일하고 실행시키는 방법을 적었으니 꼭 실습을 해보시기 바랍니다. 

     

     

    부가적으로.  Elixir 함수는 

    • Named Function 과 Anonymous Function 이 있으며, Named Function은 항상 모듈내에 존재하여야 합니다. 

    이에 대한 자세한 설명은 

    https://elixirschool.com/ko/lessons/basics/functions/ 을 읽어보시기 바랍니다. 

     

     

     

     

     

          

     

     

     

     

     

     

    'Elixir 프로그래밍' 카테고리의 다른 글

    Recursion, Tail Recursion  (2) 2019.07.30
    패턴매칭  (0) 2019.07.30
    변수와 애텀(Atom)  (0) 2019.07.28
    함수와 함수의 입출력  (0) 2019.07.27
    Elixir 의 데이터 형(Type)  (0) 2019.07.26
Designed by Tistory.