[Elixir] 모듈과 함수
함수
엘릭서에서 함수는 def 키워드로 선언한다
def** 함수명(인자1, 인자2, ...) do
** 표현식
end
모듈
그리고 저 def로 선언되는 이름있는 함수는 모듈 내에만 정의가 가능하다.
모듈은 충돌을 막고 가독성을 높이기 위한 일종의 이름공간이다.
모듈은 defmodule로 정의할 수 있다.
모듈의 이름은 대문자로 시작해야 한다.
defmodule** 모듈명 do
** 함수들...
end
여튼 간단한 모듈과 함수를 구현해본다.

호출시의 괄호는 취향과 상황에 따라 넣으면 된다.
인자 있는 함수 add를 구현한 간단한 코드다.


아 그리고, 함수의 몸체에는 여러개의 표현식이 들어갈 수 있다.
그럴경우 마지막 표현식이 반환식이 된다.


단일 표현식 함수
표현식이 하나뿐인 함수를 정의할 때는, 보다 간략화된 형식을 사용할 수 있다.
def** 함수명(인자...), do: 표현식**


디폴트 매개변수
인자를 전달하지 않았을때, 기본적으로 들어갈 값을 지정하는 것이다.
인자명 오른쪽에다 백슬래시 두개 쓰고 값을 써주면 된다.


비공개(private) 함수
함수를 정의할때 def 대신 defp를 쓰면 모듈 내에서만 사용할 수 있는 함수가 된다.
그래서 defp로 선언된걸 호출하려 하면

에러를 던진다.
하지만

내부 함수에서는 잘 호출된다.
그렇다.
참조
https://www.tutorialspoint.com/elixir/elixir_functions.htm