مروری بر نرمالسازیهایی که representer در Elixir روی راهحلها اعمال میکند
Elixir representer چندین نرمالسازی اعمال میکند. برای جزئیات به کد یا دادههای آزمون مراجعه کنید.
همهی کامنتها، مستندات، مستندات ماژول و مستندات نوع حذف میشوند.
defmodule Fake do
@moduledoc """
Fake module to demonstrate stuff
"""
@doc "Not much to see here"
def foo do
# TODO: return bar
nil
end
end
defmodule Fake do
def foo do
nil
end
end
دستورهای import در بالای ماژولها یا توابع به این ترتیب قرار میگیرند: alias، use، require، import.
defmodule Fake do
import D
alias A.U.V
use B
alias A.{T, S}
require C
def foo do
import Z
alias X
use Y
end
import NotTouched
alias NotTouched
end
defmodule Fake do
alias A.{S, T}
alias A.U.V
use B
require C
import D
def foo do
alias X
use Y
import Z
end
import NotTouched
alias NotTouched
end
کد با [mix code][mix-code] قالببندی میشود و بلوکهای do و end را الزامی میکند.
همهی توابع در pipeها با پرانتز نوشته میشوند.
نوعها بدون پرانتز نوشته میشوند.
defmodule Fake do
@type foo() :: integer() | atom
def foo, do: nil |> bar
end
defmodule Fake do
@type foo() :: integer | atom
def foo do
nil |> bar()
end
end
شناسهها به یک مقدار جانگهدار نرمالسازی میشوند.
برخی متغیرهای خاص و اتریبیوتهای ماژول (_، @spec، __MODULE__ و غیره) جایگزین نمیشوند.
کلیدهای نقشهها، ساختارها و لیستهای کلیدواژه نرمالسازی نمیشوند.
defmodule Fake do
alias Fake, as: SuperFake
@my_constant 42
@impl true
def foo(bar) when is_integer(bar) do
bar + @my_constant
end
def foo(%{a: a} = bar) do
%{bar | a: a + @my_constant}
end
def foo(_), do: nil
end
defmodule Placeholder_1 do
alias Placeholder_1, as: Placeholder_2
@placeholder_6 42
@impl true
def placeholder_4(placeholder_5) when is_integer(placeholder_5) do
placeholder_5 + @placeholder_6
end
def placeholder_4(%{a: placeholder_7} = placeholder_5) do
%{placeholder_5 | a: placeholder_7 + @placeholder_6}
end
def placeholder_4(_) do
nil
end
end
کلیدها در نقشهها و ساختارها مرتب میشوند. کلیدهای لیستهای کلیدواژه مرتب نمیشوند.
defmodule Fake do
def foo do
%MyStruct{z: 3, y: 2, x: 1}
m = %{c: 3, a: 1, b: 2}
%{m | b: 20, a: 10}
[b: 2, a: 1]
end
end
defmodule Fake do
def foo do
%MyStruct{x: 1, y: 2, z: 3}
placeholder_3 = %{a: 1, b: 2, c: 3}
%{placeholder_3 | a: 10, b: 20}
[b: 2, a: 1]
end
end