如何在一步中将数组与哈希匹配,并将其放在模型实例方法中?

时间:2015-11-25 16:07:12

标签: elixir phoenix-framework

如何在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 个答案:

答案 0 :(得分:1)

您不需要JSON编码。您可以将Geo.Point作为参数传递给函数。我会做类似的事情:

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

请注意,这不是实例方法。它只是一个功能。你应该知道的其他一些术语,因为它可以帮助你提供文档:在elixir中我们有一个列表,而不是一个数组。我们还使用地图或字典http://elixir-lang.org/getting-started/maps-and-dicts.html