Elixir로 진행 표시하고 싶습니다!

10063 단어 Elixir

소개



  • @kuroitu 님의 파이썬으로 진행하고 싶습니다!
  • 위의 기사에서 Elixir을 시도해보십시오.

    0. 준비



  • 진행률 막대 만들기을 설치합시다
  • 앞에 된장의 기사입니다만, Elixir 등 참고로 해 주세요

  • 소스 코드 작성


  • 이번에는 progress.exs 파일을 그냥 만들기만 합니다.

    progress.exs
    f = fn
      n when is_integer(n) -> Process.sleep(n)
      s -> IO.write("\r[#{s}]")
    end
    
    1..50
    |> Enum.map(&String.duplicate("#", &1))
    |> Enum.intersperse(100)
    |> Enum.each(&f.(&1))
    
  • f에 묶인 익명 함수는 인수가 정수 일 때 설치을 실행하여 잠자기합니다.
  • 정수가 아닌 경우 Process.sleep/1을 호출하여 출력합니다.
  • 원래 기사에서 볼 수 있듯이 \r가 출력하는 문자열의 시작 부분에 있다는 점입니다
  • 1..50 로 시작하는 행에서는 다음의 함수나 Pipe operator IO.write/1 를 사용해 기분 좋게 쓰고 있습니다
  • |>
  • 에누 m. 마 p/2
  • String.duplicate/2
  • Enum.intersperse/2

  • Enum.intersperse(100)를 실행하면 다음과 같은 목록이 있습니다
  • ["#", 100, "##", 100, "###", 100, "####", 100, "#####", 100, "######", 100,
     "#######", 100, "########", 100, "#########", 100, "##########", 100,
     "###########", 100, "############", 100, "#############", 100,
     "##############", 100, "###############", 100, "################", 100,
     "#################", 100, "##################", 100, "###################",
     100, "####################", 100, "#####################", 100,
     "######################", 100, "#######################", 100,
     "########################", 100, "#########################", 100, ...]
    
  • 문자열과 100가 번갈아 들어있는 목록입니다.

    progress.exs
    1..50
    |> Enum.map(&String.duplicate("#", &1))
    |> Enum.intersperse(100)
    |> IO.inspect()
    |> Enum.each(&f.(&1))
    
  • 라는 느낌으로 도중이 어떻게 되고 있는지를 Enum.each/2 로 출력해 확인하는 것은 잘 하는 것입니다

  • 실행하다


    $ elixir progress.exs
    

    IO.inspect/1



    Wrapping Up


  • Enjoy !!!
  • 좋은 웹페이지 즐겨찾기