TLDR:with
ここでは過剰です。 content
が効果的String.downcase/1
が提供するものと一致してしまうため
defmodule T do
def get_length do
{:ok, file} = File.read("<file>")
IO.puts String.downcase(file)
end
end
また、あなたは、コンパイラの警告を取得しています。
冗長モード:
私はあなたがwith
の意図を理解してないと思います。 with
は、心配している幸せなパスにパターンマッチングを記述することで、多数の奇妙なネストのケースを連鎖させる砂糖です。 、楽しみのためにそう
defp serve(socket) do
msg =
with {:ok, data} <- read_line(socket),
{:ok, command} <- KVServer.Command.parse(data),
do: KVServer.Command.run(command)
write_line(socket, msg)
serve(socket)
end
の状況を作ってみよう:
ので、代わりにこのような凶悪な何かを書くことで...
defp serve(socket) do
msg =
case read_line(socket) do
{:ok, data} ->
case KVServer.Command.parse(data) do
{:ok, command} ->
KVServer.Command.run(command)
{:error, _} = err ->
err
end
{:error, _} = err ->
err
end
write_line(socket, msg)
serve(socket)
end
...あなたはこの素敵な魔法を書くことができますファイルの例として、with
を使用することができました。
ここで定義された関数は、かなり複雑な失敗例
を持っている想像し
defmodule X do
def extract_header(file) do
# returns {:ok, file} or {:err, file} or whatever
end
def starts_with_emoji?(file) do
# returns true or false
end
end
あなたが便利になることができる方法with
見ることができます。ファイルの
defmodule T do
def header_emoji_alert do
with {:ok, file} <- File.read("<file>"),
{:ok, header} <- X.extract_header(file),
true <- X.starts_with_emoji?(header), do: IO.puts("EMOJI!!!!")
end
end
4行目が同じであることを行っていませんこのコードスニペットの4行目として、適切な行番号を入力するか、ファイル全体を投稿することができますか? –
こんにちは@CodyPoll。更新しました。 – theKing
エリクシールのシェルでこれを実行すると、参考まではありません。しかし、私がコマンドラインから実行した場合、私はします。 – theKing