我正在努力想出一個乾淨的方式來在Elixir中進行輸入驗證。Elixir中的輸入驗證
在面向對象的語言,我會做這樣的事情:
def my_func(a, b):
if !validate_a(a):
raise ArgumentError
if !validate_b(b):
raise ArgumentError
return "something"
盡我所能想出的藥劑是這樣的:
def my_func(a, b) do
cond do
not valid_a?(a) -> {:error, "a is invalid"}
not valid_b?(b) -> {:error, "b is invalid"}
:otherwise -> {:ok, "something"}
end
end
我知道,我也可以引發異常在Elxir中,但我喜歡與返回類型的模式匹配好得多,因爲我的代碼不會與try/rescue塊混雜在一起。
在Elixir中有這樣做的首選模式嗎?
你的代碼對我來說看起來很好。而不是':否則 - >'對於最後一種情況,我已經看到大多數人使用'true - >'。 – Dogbert
我也見過。我個人更喜歡用':else'或':otherwise'來提高可讀性。 –