[Elixirv1.12] tap/2, then/2 편해요.
Kernel.then/2
, Kernel.tap/2
의 함수를 추가했다.여기는 간단하고 편리하니 내가 설명해 줄게.then/2
then/2
첫 번째 파라미터의 값을 두 번째 파라미터의 함수에 전달하고 결과를 되돌려줍니다. iex> 1 |> then(fn x -> x * 2 end)
2
pipe를 연결하는 과정에서 매개 변수의 순서를 바꾸려는 경우 유용하다. iex> "some text" |> then(&File.write!("out.txt", &1))
:ok
지금까지then/2
가 없었다면 아래와 같이 써야 한다.Then을 사용하면 더욱 산뜻합니다. iex> "some text" |> (&File.write!("out.txt", &1)).()
:ok
tap/2
tap/2
는 then/2
와 마찬가지로 첫 번째 파라미터의 값을 두 번째 파라미터가 지정한 함수에 건네주고 실행하지만 첫 번째 파라미터에 건네준 값 자체로 되돌아간다. iex> tap(1, fn x -> x + 1 end)
1
pipe 사이에 로그 출력 등을 끼워 넣으면 pipe에서 출력을 바꾸지 않고 다른 처리를 할 때 편리합니다.some_func()
|> tap(&Logger.info/1)
|> other_func()
IO.inspect처럼'pipe의 흐름 자체가 바뀌고 싶지 않지만 끼워 처리하고 싶다'는 상황tap/2
이 나타나면 좋겠다.코드 예
공식 블로그의 코드 블록은 식별하기 쉬워서 여기에도 두었다.
tap/2
,then/2
사용하면 더욱 원활합니다.tap/2, then/2 사용 시
"hello world"
|> tap(&IO.puts/1)
|> then(&Regex.scan(~r/\w+/, &1))
tap/2,then/2를 사용하지 않는 경우"hello world"
|> (fn x ->
IO.puts(x)
x
end).()
|> (&Regex.scan(~r/\w+/, &1)).()
총결산
Elixir v1.12에서 도입된
Kernel.then/2
,Kernel.tap/2
를 소개했다.공식 블로그의 기술 중참고 자료
Reference
이 문제에 관하여([Elixirv1.12] tap/2, then/2 편해요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/koga1020/articles/aafcc804b65c5a28caa7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)