Languages/Elixir

[Elixir] Elixir 란? / 사용법

MOONCO 2023. 3. 26. 22:30

Elixir 란?

erlang(얼랭) 이라는 언어에,

평소에 자주쓰는 좋은기능들을 추가한 프로그래밍 언어

 

필요성

erlang의 장점을 가져온 결과, 어마무시하게 많은 일을 동시에 처리할 수 있다 ( 동시성 )

기존의 erlang은, 가독성이 좋지 않아 배우기가 쉽지 않은데 반해 ( 러닝커브 높음 )

elixir는 가독성이 좋고, 간단한 구조를 추구하므로, ( 러닝커브 낮아짐! )

한 프로그램의 오류가, 다른 프로그램에 미치는 일이 매우 적다 ( 의존성 문제 적음 )

의존성이 적으므로 (위의 내용), 확장성이 뛰어나다!

 

사용처

프론트엔드부터, 백엔드까지, 전부 Elixer 하나 만으로 구현할 수 있다!!!

( 최근 우리나라 한국축산데이터에서 올린 유튜브영상이 있다. )

Elixir의 특별한 점

 

= 연산자의 기능이 많다

1. 왼쪽에 변수가 오는 경우 => 변수에 값을 할당 ( assign, binding )

2. 왼쪽에 상수가 오는 경우 => 오른쪽 값과 비교

 

퍠턴 매칭이란?

= 연산자가, 왼쪽과 오른쪽을 비교하는 것 ( 위의 2번 )

같다면, 오른쪽 값 반환
# IO.puts() : 화면 출력, Elixir 모듈

IO.puts(x = 1)
# 1. 좌변이 변수이므로, x와 1이 같아질 수 있는지 비교
# 2. x는 변수이므로, 1과 같아 질수있다. ( 매칭 성공 )
# 3. 매칭이 성공 했으므로, 아직 연결되지 않은 좌우변 x 와 1을 연결 (바인딩)
# 4. 연결이 완료되면, 우변인 1을 반환 후 출력

# => 1


IOputs(2 = x)
# 1. 좌변이 상수이므로, 2와 x가 같은지 비교
# 2. 위에서 x에 1을 바인딩 해놨기에, 2와 같지 않음 ( 매칭 실패 )
# 3. 런타임 에러 발생!!!!!



IO.puts({x,2} = {3,2})
# 1. 좌변에 변수가 있으므로, 좌변과 우변이 같아질 수 있는지 비교
# 2. x는 변수이므로, 3과 같아질 수 있고, 2는 좌변과 우변이 같다 ( 매칭 성공 )
# 3. 좌우변 연결 ( x = 3 )
# 4. 우변인 {3,2} 출력

# => {3, 2}
패턴 매칭은, 좌우변을 비교하고,

매칭 성공시에, 우변을 반환하므로,

조건문으로 사용 할 수 있다.

 

 

패턴 매칭 - 조건문으로 활용

매칭되는 것 === 조건에 맞는 것 === 일치하는 것

"|" (Shift + \) 기호를 사용해서

List 나 Collection 에서, 일치하는(매칭되는) 요소를 검색할 수 있다.
# elixir에서 map 만들기 (%사용)
map = %{foo: "bar", hello: "world"}

# if map속에 foo: 키가 있으면, then foo: = "baz" ( 또 패턴 매칭 ㅋㅋ )
%{map | foo: "baz"}
map에 있는 모든 key 값과, foo: 를 패턴 매칭 한다.

매칭에 성공한 key 값이 있으면, 해당 key값에 "baz"를 연결해, 새로운 map을 만든다.

 

Atom

Elixir에서는 가장작은 단위 atom 이라는 상수를 사용한다.
# 아톰 선언하기 ( 문자앞에 ":"만 붙이면, 아톰이 된다 - 상수 )
:test1

 

---------정리중

 
반응형