Elixir에서 유파를 구현해보십시오.
소개
@Nemesis 님의 Java에서 유파를 구현해보십시오.을 보았습니다. 나는 Elixir에서 시도하려고했습니다.
Elixir 처음으로 향해 쓰고 있습니다.
Elixir의 의미는 불로 불사의 영약입니다
0. 준비
1. 프로젝트 생성
$ mix new yubaba
$ cd yubaba
$ mix new yubaba
$ cd yubaba
Elixir 처음이라면 그렇다고 말하십시오
2. 프로그램 작성
lib/yubaba.exdefmodule 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
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>
$ 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>
4. 개선(할 필요는 없을지도 모릅니다만)안
Yubaba.new_name/1
함수를 준비하고 입력 값에 따라 처리를 변경하려고합니다 Yubaba.new_name/1
두 가지 함수를 만들고 있습니다.Elixir이라는 장치에서 첫 번째 일치하는 함수가 실행됩니다
""
과 다른 것으로 보았습니다 defp
의 p
는 private
의 피 ~입니다 (원래 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
iex> System.halt
Wrapping Up
Elixir은 Elixir 모듈과 잘 어울릴 수 있습니다
Reference
이 문제에 관하여(Elixir에서 유파를 구현해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/torifukukaiou/items/daec6de40a54978dccc9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)