이 장에서 살펴볼 내용은
엘릭서의 자료형과 학습을 위한 몇개지 개념을 포함한 다섯가지다
1. 값타입
2. 시스템타입
3. 컬렉션타입
4. 연산자
5. with 표현식
엘릭서에 기본으로 내장된 자료형은 다음과 같다
1.값타입
- 정수
- 실수
- 아톰
- 범위
- 정규식
2.시스템타입
- 프로세스ID, 포트
- 레퍼런스
3.컬렉션타입
- 튜플
- 리스트
- 맵
함수역시 자료형인데 이것은 다음장에 설명하고자 한다
문자열이나 구조체같은것이 없는데
엘릭서에서는 문자열과 구조체도 기본자료형으로 만들어졌다
---
값타입
1.정수
정수리터럴은 10진수, 16진수, 8진수, 2진수등의 방법으로 쓸 수 있고
1_000_000과 같이 숫자중간에 언더스코어를 포함할수도 있다
백만이니까 100_0000으로 써도된다
2.실수
1.0, 0.2456처럼 표현한다
3.atom
아톰은 어떤 이름을 나타내는 상수다 앞에 콜론을 쓰고 문자나 엘릭서연산자를 붙이면 아톰이 된다
아톰으로 사용할 수 있는문자는 아래처럼 UTF-8문자, 숫자, 언더스코어, 골뱅이등이 있다
느낌표나 물음표로 끝낼수도 있고 큰따옴표 사이에 임의의 문자를 넣어 만들수도 있다
:variable
:is_binary?
:<>
:===
:"func/3"
:"hi"
아톰의 값은 아톰의 이름과 같고 같은 이름을 가진 두개의 아톰은 항상 같다
아톰은 값에 이름표를 달기위해 주로 사용한다
4.range
연속된 정수를 표현한다 start..end와 같이 쓰고 start와 end는 정수여야 한다
5.정규식
정규식리터럴은 ~r{정규식}과같이 쓴다
엘릭서는 펄호환문법인 PCRE방식의 정규식을 사용한다
---
시스템타입
이 자료형은 evm에서 사용하는 자원들을 표현한다
1.pid
로컬 또는 다른컴퓨터에 있는 프로세스를 가리킨다
self함수를 이용해 현재 프로세스의 pid를 얻을 수 있다
2.port
포트는 대체로 프로그램외부에 있는 데이터를 읽거나 쓸 자원을 가리킨다
3.reference
make_ref함수를 호출해서 전역적으로 레퍼런스를 얻을 수 있다
---
컬렉션타입
1.튜플
{1, 2}
{:ok, 42, "next"}
와 같이 쓴다
>{status, count, action} = {:ok, 42, "next"}
{:ok, 42, "next"}
>status
:ok
>count
42
>action
"next"
엘릭서에서는 일반적으로 함수실행에 성공했을때 첫번째값이 :ok인 튜플을 반환한다
엘릭서에서는 리스트보다 튜플을 더 자주쓴다
2.리스트
리스트는 비어있거나 머리와 꼬리로 나뉜다
머리부분은 하나의 값을 담으며 꼬리부분은 그자체로 다시 리스트다
또한 엘릭서에서는 리스트에서 첫번째 값을 제거해 꼬리부분을 남길때 복사하지않는다
포인터가 리스트의 꼬리를 가리키도록 한다
>[1, 2, 3] ++ [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>[1, 2, 3, 4] -- [2, 4]
[1, 3]
> 1 in [1, 2, 3]
true
> "a" in [1, 2, 3]
false
3.맵
맵은 키-값 쌍으로 이루어진 컬렉션이다
%{key => value, key => value}와같이 생겼다
키는 문자열일수도 튜플일수도 아톰일수도 있고
표현식을 사용해도 되고 키의 타입을 통일하지 않아도 된다
> states = %{"AL" => "Alabama", "WI" => "Wisconsin"}
%{"AL" => "Alabama", "WI" => "Wisconsin"}
> state["AL"]
"Alabama"
와 같이 사용한다
댓글 0