Elixir রিপ্রেজেন্টার সমাধানগুলোতে যে নরমালাইজেশনগুলো প্রয়োগ করে তার একটি সারসংক্ষেপ
Elixir রিপ্রেজেন্টার বেশ কিছু নরমালাইজেশন প্রয়োগ করে। বিস্তারিত জানতে কোডটি বা টেস্ট ডেটা দেখুন।
সব কমেন্ট, ডকস, মডিউলডকস ও টাইপডকস মুছে ফেলা হয়।
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 ব্লক বাধ্যতামূলক করে।
পাইপে থাকা সব ফাংশন বন্ধনী দিয়ে লেখা হয়।
আর টাইপ লেখা হয় বন্ধনী ছাড়া।
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__ ইত্যাদি) প্রতিস্থাপন করা হয় না।
ম্যাপ, স্ট্রাক্ট ও কিওয়ার্ড লিস্টের কী (key) নরমালাইজ করা হয় না।
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
ম্যাপ ও স্ট্রাক্টের কী (key) সাজানো হয়। কিওয়ার্ড লিস্টের কী (key) সাজানো হয় না।
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