[Elixir] 모듈과 함수

[원본 링크]

함수
엘릭서에서 함수는 def 키워드로 선언한다
def** 함수명(인자1, 인자2, ...) do
**    표현식

end


모듈
그리고 저 def로 선언되는 이름있는 함수는 모듈 내에만 정의가 가능하다.
모듈은 충돌을 막고 가독성을 높이기 위한 일종의 이름공간이다.
모듈은 defmodule로 정의할 수 있다.
모듈의 이름은 대문자로 시작해야 한다.
defmodule** 모듈명 do
**    함수들...

end

여튼 간단한 모듈과 함수를 구현해본다. image

image 호출시의 괄호는 취향과 상황에 따라 넣으면 된다.

인자 있는 함수 add를 구현한 간단한 코드다. image

image

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

image


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

image


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

image


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

image 에러를 던진다.

하지만 image

image 내부 함수에서는 잘 호출된다.

그렇다.


참조
https://www.tutorialspoint.com/elixir/elixir_functions.htm