/ / Як зіставити масив з хешем за один крок та розмістити його в методі Model instance? - еліксир, фенікс-каркас

Як підібрати масив до хешу за один крок і помістити його в метод типового екземпляра? - еліксир, фенікс-каркас

Як перетворити Geo.Point атрибут координат містить %Geo.Point{coordinates: {49.44, 17.87}, srid: nil} після Geo.JSON.encode: %{"coordinates" => [49.44, 17.87], "type" => "Point"} До наступної формули:

%{latitude: latitude, longitude: longitude}

Це мій сучасний метод, як це зробити за один крок?

%{"coordinates" => [latitude,longitude] } = Geo.JSON.encode(place.coordinates)
coordinates = %{latitude: latitude, longitude: longitude}

Як розмістити його в методі, наприклад, щоб він повернув нову формулу після виклику, наприклад, place.to_lat_lng?

defmodule MyApp.Place do
use MyApp.Web, :model

schema "place" do
field :coordinates, Geo.Point

timestamps
end
def to_lat_lng do
#...format coordinates
end
end

Відповіді:

1 для відповіді № 1

Вам не потрібно кодувати JSON. Ви можете передати Geo.Point як аргумент функції. Я б зробив щось на кшталт:

  def to_lat_lng(%Geo.Point{coordinates: {lat, long}}) do
%{latitude: lat, longitude: long}
end

Зверніть увагу, що це не метод примірника. Це просто функція. деякі інші термінологічні речі, які ви повинні знати, як це може допомогти вам в документації: В еліксирі у нас є список, а не масив. Ми також використовуємо карту чи дакт http://elixir-lang.org/getting-started/maps-and-dicts.html