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
---------정리중
반응형