首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Elixir代码重构

Elixir代码重构
EN

Stack Overflow用户
提问于 2017-06-22 03:20:50
回答 1查看 62关注 0票数 1

我在Phoenix应用程序中有以下视图:

代码语言:javascript
运行
复制
defmodule TattooBackend.Web.API.V1.AccountView do
  use TattooBackend.Web, :view

  alias TattooBackend.Repo

  def render("my_account.json", %{account: account}) do
    account = account |> Repo.preload(:studio)
    studio  = account.studio

    data = %{
      id: account.id,
      email: account.email,
    }

    if account.studio do
      data = studio_data(data, studio)
    end

    if true do
      data = Map.put(data, :test_key, %{})
    end

    data
  end

  defp studio_data(data, studio) do
    studio  = studio |> Repo.preload(:address)
    address = studio.address

    studio_data = %{
      id: studio.id,
      name: studio.name,
      address: "#{address.street}, #{address.city} #{address.zip_code}"
    }

    Map.put(data, :studio, studio_data)
  end
end

一切正常,但在控制台中我看到了以下警告:

代码语言:javascript
运行
复制
warning: the variable "data" is unsafe as it has been set inside a case/cond/receive/if/&&/||. Please explicitly return the variable value instead.

我如何重构它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-22 03:32:00

该警告指示您应该以这样的方式编写条件,即条件的返回是所分配的内容,而不是在条件本身内部进行赋值。

代码语言:javascript
运行
复制
data = if 5 > 1 do
         "best data"
       else
         "boring data"
       end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44684602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档