제어구조


if

String.valid? string인지 체크

 


unless

is_intege 숫자인지 체크

 


case

여러 패턴에 대해 매치해야 한다면 case를 이용

일치하는 패턴이 없는 경우 에러발생

'_'는 "그 외의 모든 것"에 매치되는 else처럼 생각하면 된다. (case구문에서 '_'이 없다면 일치하는 패턴이 없을 때 오류 발생)

 

'_'사용

 

case는 패턴 매칭에 의존하기 때문에 같은 규칙과 제약이 모두 적용된다. 기존의 변수에 매치하고자 한다면 핀연산자를 사용해야한다.

 

when으로 점검기능이있다. x > 0 크면 "Will match"

 


Cond

값이 아닌 조건식에 매치해야 할 때 사용 (else if 기능)

Cond문 마찬가지로 예외처리가 없으면 에러를 발생하는데, true조건식으로 처리해준다.

 


with

중첩된 case구문이 쓰일만한 곳이나 깔끔하게 파이프 연산을 할 수 없는 상황에서 유용하다.

'<-'은 오른쪽을 왼쪽과 비교하기 위해 패턴매칭을 사용

매치 실패한 경우

 

반응형

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

Elixir) 예제 연습_패턴 매칭  (0) 2019.08.22
(Elixir)로 JSON API 서버 만들기  (0) 2019.08.21
Elixir) 예제 연습 Enum  (0) 2019.08.21

패턴 매칭은 Elixir의 강력한 기능. 간단한 값, 자료 구조, 심지어는 함수까지도 매치시킬 수 있음

 

 

상수 매칭

 

컬렉션 매칭

1. 리스트

2. 튜플

 

핀 연산자

매치 연산자의 좌변에 변수가 포함되어 있을 때에는 값의 대입이 일어납니다. 하지만 경우에 따라서는, 뱐수에 새로운값이 대입되는 것을 원치 않을 수 있다. 이러한 상황에서는 핀 연산자^를 사용해야한다.

함수의 절에 핀연산 적용

 

반응형

어떤 임의의 URL을 입력하면 JSON형식의 텍스트를 반환하는 API서버

 

프로젝트 생성

cmd터미널에서 mix new 명령으로 새프로젝트를 생성한다.

그러면 아래 처럼 내컴퓨터의 생성한 프로젝트 이름으로 폴더가 생긴다.

 

생성한 디렉터리로 들어가서 구조를 확인해봤다.

 

 

의존 라이브러리 추가하기

mix.exe파일에 끝에있는 deps함수를 수정한다. 프로젝트에서 의존하는 라이브러리를 추가하는 부분이다.

   나는 {:plug_cowboy , " ~> 1.0 " }, 이걸로 종속성을 수정해야 되었다.

 

밑에 mix명령어를 통해 로컬프로젝트 속으로 import시킨다.

 

 

다음은 application함수를 아래와 같이 수정하자

이 프로젝트에서사용될 어플리케이션들을 선언하는 부분이다.

 

아래와 같이 입력하면 iex 입력으로 바뀐다.

이 상태에서 앞서 mix설정에서 추가한 웹서버인 CowboyHTTP서버를 실행하자

아래 명령문을 통해 실행한다.

웹브라우저를 통한 확인

잘나오면 MyApp모듈이 Cowboy웹서버와 연동이 된것이다. 

 

 

API 서버 구현

URL/users/tom을 호출하면 사용자 프로필 정보를 JSON형식으로 출력하는 간단한 API서버가 된다.

my_app.ex파일 수정

get " /users/:name" do부분에서 URL맵핑을 통해 웹요청을 처리하고,

마지막 match _do부분은 이도저도 아닌 나머지 요청에 대한 처리(catch-all)루틴이다.

'|>'sms Elixir의 파이프 연산자이다.

 

명령행에서 API 서버 실행

IEx에 접속하여 Cowboy업데터를 호출하는 방법이 아닌 명령행에서 직접 API서버를 실행할 수 있도록 해보자

mix.exe파일을 열어 application함수를 아래와 같이 변경하자

mod키를 추가하여, 어플리케이션이 시작될 때 실행할 시작 모듈을 MyApp으로 지정하였다.

 

메인코드로 와서 start함수를 추가하자(어플리케이션이 시작될때 호출되는 함수다)

마지막으로 터미널에서 다음과 같이 mix run 명령어를 실행하면,

 

학습참고 

https://www.usefulparadigm.com/2017/02/03/building-a-json-api-server-using-elixir-and-plug/

반응형

 

all? 

아이템 요소가 모두 만족해야 한다.

 

any? 

하나라도 만족하면 true를 반환한다.

chunk_every

컬렉션을 입력한 숫자로 쪼개기

 

chunk_by

열거할수 있는 함수를 받아와서, 주어진 함수의 결과 값이 변할 때 마다 그룹을 새로 시작한다.

map_every

모든 n번째 아이템을 가져오며, 항상 첫번째 것에도 적용한다.

 

each

새로운 값을 만들어내지 않고 컬렉션에 대해 반복한다.

 

map

각 아이템마다 함수를 적용하여 새로운 컬렉션을 만들어내고자 할때

 

min

컬렉션 내의 최소값

max

컬렉션 내의 최대값

 

reduce

컬렉션을 하나의 값으로 추려낸다. 선택사향으로 축적자를 함수에 전달이 가능하다.

 

sort

컬렉션 정렬

1)함수 사용x

2)함수 사용

 

uniq_by

열거 가능한 집합 내의 중복요소를 제거

 

 

Elixir School

프로그래밍 언어 Elixir 배우기

elixirschool.com

 

반응형

+ Recent posts