我正在浏览 elixir 项目代码库,遇到以下问题,请帮我看看匹配操作在函数参数中正在做什么?
{ result, errors } = validate(schema, data, "", data)
Run Code Online (Sandbox Code Playgroud)
def validate(root = %{ custom: validator }, data, path, full_data) when is_function(validator) do
{ result, errors } = if Map.has_key?(root, :type), do: validate( Map.drop(root, [:custom]) , data, path ), else: { data, [] }
case validator.(full_data, result, path) do
{ :ok, value } -> { value, errors }
{ :error, error } -> { result, errors ++ [ %{ param: path, code: :validation_error, message: error } ] } …Run Code Online (Sandbox Code Playgroud) elixir ×1