假設仙丹庫定義:如何擴展/繼承elixir模塊?
defmodule Decoder do
def decode(%{"BOOL" => true}), do: true
def decode(%{"BOOL" => false}), do: false
def decode(%{"BOOL" => "true"}), do: true
def decode(%{"BOOL" => "false"}), do: false
def decode(%{"B" => value}), do: value
def decode(%{"S" => value}), do: value
def decode(%{"M" => value}), do: value |> decode
def decode(item = %{}) do
item |> Enum.reduce(%{}, fn({k, v}, map) ->
Map.put(map, k, decode(v))
end)
end
end
我想定義一個模塊MyDecoder
剛剛增添了一分def decode
上述模塊。在oo語言中,這可以通過某種繼承/混搭/擴展來完成。
我該如何在靈藥中做到這一點?
例如,我需要在https://github.com/CargoSense/ex_aws/上添加def decode(%{「NULL」=> true}),do:nil'到'ExAws.Dynamo.Decoder' blob/c8d62612a427ef5cf6cfd74b772dcf82e90ab567/lib/ex_aws/dynamo/decoder.ex – anshul
這是實施中的錯誤嗎?如果是這樣,那麼在公佈修補程序之前如何製作公關並使用自己的分支? –
這樣做。想知道elixir的一般解決方案是什麼樣子。據我所知,沒有一種乾淨的方式來擴展一個模塊只有一個功能,而不需要重寫原始庫。 – anshul