내 붐 |> if(do: "Yes", else: "No") [Elixir]
12394 단어 Elixir
소개
AtCoder 문제가 발생했습니다.
|> if(do: "Yes", else: "No")
입니다.내 붐
iex> [1, 2, 3] |> Enum.all?(& &1 < 100) |> if(do: "Yes", else: "No")
"Yes"
iex> [1, 2, 101] |> Enum.all?(& &1 < 100) |> if(do: "Yes", else: "No")
"No"
패턴 매치
defmodule Awesome do
def solve(list), do: Enum.all?(list, & &1 < 100) |> do_solve()
defp do_solve(true), do: "Yes"
defp do_solve(false), do: "No"
end
if 문처럼
defmodule Awesome do
def solve(list) do
if Enum.all?(list, & &1 < 100) do
"Yes"
else
"No"
end
end
end
익명 함수를 만들고 파이프 연산자로 연결
defmodule Awesome do
def solve(list) do
Enum.all?(list, & &1 < 100)
|> (fn b -> if b, do: "Yes", else: "No" end).()
end
end
iex> [1, 2, 3] |> Enum.all?(& &1 < 100) |> if(do: "Yes", else: "No")
"Yes"
iex> [1, 2, 101] |> Enum.all?(& &1 < 100) |> if(do: "Yes", else: "No")
"No"
defmodule Awesome do
def solve(list), do: Enum.all?(list, & &1 < 100) |> do_solve()
defp do_solve(true), do: "Yes"
defp do_solve(false), do: "No"
end
if 문처럼
defmodule Awesome do
def solve(list) do
if Enum.all?(list, & &1 < 100) do
"Yes"
else
"No"
end
end
end
익명 함수를 만들고 파이프 연산자로 연결
defmodule Awesome do
def solve(list) do
Enum.all?(list, & &1 < 100)
|> (fn b -> if b, do: "Yes", else: "No" end).()
end
end
defmodule Awesome do
def solve(list) do
if Enum.all?(list, & &1 < 100) do
"Yes"
else
"No"
end
end
end
defmodule Awesome do
def solve(list) do
Enum.all?(list, & &1 < 100)
|> (fn b -> if b, do: "Yes", else: "No" end).()
end
end
Awesome.get_content() # .wavデータが取得できるすんごい関数
|> (fn content -> File.write("alarm.wav", content) end).()
다른 f는 무엇입니까?
if를 파이프에서 사용 의 Elixir
defmacro if(condition, clauses) do
build_if(condition, clauses)
end
defp build_if(condition, do: do_clause) do
build_if(condition, do: do_clause, else: nil)
end
defp build_if(condition, do: do_clause, else: else_clause) do
optimize_boolean(
quote do
case unquote(condition) do
x when :"Elixir.Kernel".in(x, [false, nil]) -> unquote(else_clause)
_ -> unquote(do_clause)
end
end
)
end
defp build_if(_condition, _arguments) do
raise ArgumentError,
"invalid or duplicate keys for if, only \"do\" and an optional \"else\" are permitted"
end
2021/01/11(월) 추가
소스 코드 님의 글에서 @pojiro
파이프라인에서 case를 사용할 수 있다는 것을 알았습니다. (phx.gen.auth 코드에서 발췌
Wrapping Up
Reference
이 문제에 관하여(내 붐 |> if(do: "Yes", else: "No") [Elixir]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/torifukukaiou/items/937a0e5ba7f393e00793텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)