|> 연산자를 파이프 연산자라고 해요. 이 연산자를 사용하면 함수 호출을 연달아 연결할 수 있는데, 이때 앞선 함수 호출이 반환한 값이 다음 함수 호출로 전달돼요.
"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"
위 코드는 다음 코드와 같아요.
string.append(string.uppercase("hello"), "?!")
파이프 연산자는 값을 함수 호출의 첫 번째 인자로 전달하거나, 새로운 호출의 유일한 인자로 전달해요. 이때 타입이 맞는 쪽을 선택해요.
100
|> function_that_takes_two_arguments(1)
// Is equivalent to
function_that_takes_two_arguments(100, 1)
100
|> function_that_returns_a_function(1)
// Is equivalent to
function_that_returns_a_function(1)(100)
가끔은 값을 다른 위치로 전달하고 싶을 때가 있어요. 이럴 때는 _ 플레이스홀더를 사용해서 값이 어디에 들어가야 하는지 나타낼 수 있어요.
100
|> some_function(1, _, 2)
이 연습 문제에서는 고등학교 커플이 소셜 미디어에서 사랑을 고백할 수 있도록, 두 사람의 이니셜이 들어간 ASCII 하트를 만들어요:
****** ******
** ** ** **
** ** ** **
** * **
** **
** J. K. + M. B. **
** **
** **
** **
** **
** **
** **
***
*
first_letter 함수를 구현해요. 이름을 받아서 첫 글자를 반환해야 해요. 이름에 있는 불필요한 공백도 정리해 줘야 해요.
first_letter("Jane")
// -> "J"
initial 함수를 구현해요. 이름을 받아서 첫 글자를 대문자로 바꾸고 마침표를 붙여 반환해야 해요. 이전 단계에서 정의한 first_letter를 꼭 다시 사용해요.
initial("Robert")
// -> "R."
initials 함수를 구현해요. 이름과 성이 공백으로 구분된 전체 이름을 받아서 이니셜을 반환해야 해요. 이전 단계에서 정의한 initial을 꼭 다시 사용해요.
initials("Lance Green")
// -> "L. G."
pair 함수를 구현해요. 전체 이름 두 개를 받아서 ASCII 하트 안에 들어간 이니셜을 반환해야 해요. 이전 단계에서 정의한 initials를 꼭 다시 사용해요.
pair("Blake Miller", "Riley Lewis")
// -> "
// ****** ******
// ** ** ** **
// ** ** ** **
// ** * **
// ** **
// ** B. M. + R. L. **
// ** **
// ** **
// ** **
// ** **
// ** **
// ** **
// ***
// *
// "
Exercism에 가입하고 Gleam 트랙을 개념 33개연습 문제 122개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.