프로그래밍 언어/엘릭서

[엘릭서] 3. 엘릭서 기초

riroan 2022. 4. 26. 09:08

엘릭서의 여러가지 자료형들에 대해서 알아보자.

 

정수

엘릭서는 2, 8, 10, 16진수를 사용할 수 있다.

a=10
b=0b1010
c=0o123
d=0x1af

또한 파이썬과 같이 숫자사이에 _를 넣어 자릿수를 구분할 수 있다.

a=1_000_000
b=1_0_0_0 # 꼭 3자리 단위로 끊을 필요는 없다.

 

실수

다른 언어와 마찬가지로 과학표기법을 사용하여 나타낼 수 있다.

a=1.0
b=5.6123
c=1.2e5
d=6.02e-23

 

아톰

재미있는 변수이다.

변수이름 자체가 값이 된다.

일종의 enum역할을 대신한다고 봐도 될 것 같다.

이제 방향을 정의할때 LEFT = 1, RIGHT = 2, UP = 3, DOWN = 4 같이 개발하던 기억은 안녕...

변수 앞에 :을 붙여서 정의한다.

특히 :true, :false 는 bool 자료형으로 사용되며 엘릭서에서 함수가 성공적으로 반환되면 :ok를 사용한다.

:ok
:wow
:true
:LEFT

 

범위

start..end//step 으로 사용한다.

start부터 end값까지 step씩 건너뛰면서 나타낸다.

//step을 생략하면 1씩 건너뛴다.

반드시 모두 정수여야 한다.

1..3 # [1,2,3]
2..10//3 # [2,5,8]

 

튜플

다른 언어에서의 튜플과 같다고 봐도 된다. (수정이 불가한 값들의 순서있는 모음)

정의할 때 중괄호를 사용한다.

보통 값은 2개~4개를 사용하며 값이 특별히 2개일때는 2-튜플, 3개일때는 3-튜플이라고 부른다.

{status, count} = {:ok, 5}

 

리스트

파이썬의 리스트와 살짝 다르다.

파이썬은 배열같은 느낌이지만 엘릭서는 링크드 리스트같은 느낌이다.

대괄호를 사용하여 정의한다. (지난번 패턴매칭때 본 적이 있을것이다.)

++연산자로 리스트를 연결하고 --연산자로 리스트의 차집합을 구할 수 있다.

in 연산으로 포함여부를 검사할 수 있다.

[a,b,c] = [1,2,3]
[1,2,3]++[4,5,6] # [1,2,3,4,5,6]
[1,2,3]--[2,3] # [1]
[1,2,3]--[2,4] # [1,3]
1 in [1,2,3,4] # true(= :true)
5 in [1,2,3,4] # false(= :false)

 

파이썬의 딕셔너리같은 개념이다.

%{key=>value} 형식으로 정의한다.

일반적으로 키는 같은 자료형을 사용하지만 달라도 된다.

키로 아톰을 사용할 경우 단축해서 사용할 수 있고 .으로 접근할 수 있다.

mp = %{"A"=>10, "B"=>50, 10=>60}
mp["A"] #10
mmp = %{a: 10, b: 20, c: 30}
mp[:a] # 10
mp.b # 20
mp.d # nil

실험해봤는데 .으로 접근할 때 아톰 키가 영어 대문자면 에러가 나는거같다.

키가 없을 때 nil을 반환한다.(다른 언어에서 null)

'프로그래밍 언어 > 엘릭서' 카테고리의 다른 글

[엘릭서] 2. 패턴매칭  (0) 2022.04.26
[엘릭서] 1. 엘릭서 언어  (0) 2022.04.19