Elixir에서 유파를 구현해보십시오.

10932 단어 Elixir재료유파

소개



  • @Nemesis 님의 Java에서 유파를 구현해보십시오.을 보았습니다. 나는 Elixir에서 시도하려고했습니다.

  • Elixir 처음으로 향해 쓰고 있습니다.
  • 라고 말하면서, 나 자신은 다소, 털이 나온 정도의 아마추어입니다

  • Elixir의 의미는 불로 불사의 영약입니다
  • a magic liquid that is believed to cure illnesses or to make people live forever


  • 0. 준비


  • 먼저 Elixir을 설치합시다
  • 앞에 된장 기사이지만 설치 등을 참조하십시오

  • 1. 프로젝트 생성


    $ mix new yubaba
    $ cd yubaba
    
  • 프로젝트의 병아리가 만들어집니다
  • 가득 찼을 수 있습니다

  • Elixir 처음이라면 그렇다고 말하십시오
  • 익숙해지면 평소의 풍경으로 보입니다

  • 2. 프로그램 작성



    lib/yubaba.ex
    defmodule Yubaba do
      def main do
        name = IO.gets("契約書だよ。そこに名前を書きな。\n") |> String.trim()
    
        IO.puts("フン。#{name}というのかい。贅沢な名だねぇ。")
        new_name = String.codepoints(name) |> Enum.random()
    
        IO.puts("今からお前の名前は#{new_name}だ。いいかい、#{new_name}だよ。分かったら返事をするんだ、#{new_name}!!")
      end
    end
    
  • |>Pipe operator이라고 하며 이전 계산 결과를 다음 함수의 첫 번째 인수에 넣어 계산합니다
  • .
  • 입력 문자열에서 하나의 문자를 선택합니다 (이름을 빼앗다). 를 사용하여 new_name를 찾고 있습니다.
  • String.codepoints(name) |> Enum.random()

  • Module.function/1 어떻게 갑자기 쓰고 있지만, /의 뒤는 인수의 수입니다

  • String.codepoints/1 세계에서 자주 보는 표기법입니다


  • 3. 실행


    $ iex -S mix
    
    iex> Yubaba.main
    契約書だよ。そこに名前を書きな。
    山田太郎
    フン。山田太郎というのかい。贅沢な名だねぇ。
    今からお前の名前は太だ。いいかい、太だよ。分かったら返事をするんだ、太!!
    :ok
    
    iex> Yubaba.main
    契約書だよ。そこに名前を書きな。
    
    フン。というのかい。贅沢な名だねぇ。
    ** (Enum.EmptyError) empty error
        (elixir 1.10.4) lib/enum.ex:1999: Enum.random/1
        (yubaba 0.1.0) lib/yubaba.ex:24: Yubaba.main/0
    
    iex> 
    
  • 아무것도 입력하지 않으면 오류가 발생하는 것은 Enum.random/1과 같습니다

  • 4. 개선(할 필요는 없을지도 모릅니다만)안


  • 여러 가지 방법이 있다고 생각합니다
  • 여기서는 Yubaba.new_name/1 함수를 준비하고 입력 값에 따라 처리를 변경하려고합니다
  • Yubaba.new_name/1 두 가지 함수를 만들고 있습니다.

  • Elixir이라는 장치에서 첫 번째 일치하는 함수가 실행됩니다
  • 빈 문자열 ""과 다른 것으로 보았습니다

  • defppprivate의 피 ~입니다 (원래 def를 설명하고 있지 않습니다만)
  • Yubaba 모듈 내에서만 사용할 수있는 함수입니다


  • lib/yubaba.ex
    defmodule Yubaba do
      def main do
        name = IO.gets("契約書だよ。そこに名前を書きな。\n") |> String.trim()
    
        IO.puts("フン。#{name}というのかい。贅沢な名だねぇ。")
        new_name = new_name(name)
    
        IO.puts("今からお前の名前は#{new_name}だ。いいかい、#{new_name}だよ。分かったら返事をするんだ、#{new_name}!!")
      end
    
      defp new_name(""), do: ""
    
      defp new_name(name), do: String.codepoints(name) |> Enum.random()
    end
    
  • IEx를 계속 시작한 경우 recompile 다시 시도하십시오
  • .

    5. IEx 종료


    iex> System.halt
    
  • 참고
  • 본가


  • Wrapping Up


  • 어쨌든 패턴 매치 로 써 보려고 시작해 보았는데, 실은 깊은 소재였던 것 같아 Elixir의 Iex를 명령 입력으로 중지 의 꽤 많은 것을 소개할 수 있었던 것 같습니다

  • ElixirElixir 모듈과 잘 어울릴 수 있습니다
  • .
  • 무엇이라도 그렇다고 생각하지만, Elixir 특히 공식 문서를 읽는 것이 가장 좋습니다.
  • 영어로 쓰여지고 있지만 대부분 실행 예가 쓰여 있으며 공식 문서도 각종 라이브러리도 같은 형식으로 쓰여 있으므로 익숙해지면 매우 읽기 쉽습니다

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