정수 목록을 기대했다면 문자열과 같은 것이 반환되었습니다 => 그것 Charlists지도! (Elixir)

11245 단어 Elixir

소개


  • 2020/09/02에 행해졌습니다.

    플레이어 |> Repo.all |> Enum.map(& &1.number)
    같은 코드의 결과가 '\t\b'가 되었습니다. 이게 뭐야?

    대답은 fukuoka.ex#41:Elixir 다과회 입니다


    iex> [9, 8]
    '\t\b'
    

  • Charlists 은 List의 요소가 모두 정수이고, 각각의 정수가 아스키 문자로서 인쇄 가능한 것이면, 싱글 쿼테이션( ' )로 구겨진 아스키 캐릭터의 열로 표시하게 되어 있습니다
  • 아니, 그렇게하지 말고 정수 목록에 표시하고 싶다면 Iex 설정을 변경하는 것이 좋습니다.
  • 정수 목록에서 결과를 확인하고 싶을 때는 Iex 설정을 변경해 봅시다.
  • ~/.iex.exs에 설정을 미리 쓸 수 있습니다.

  • iex> IEx.configure(inspect: [charlists: :as_lists])
    :ok
    
    iex> [9, 8]
    [9, 8]
    
  • h IEx.configureh Inspect.Opts에서 도움말을 보면 설정 방법이 작성됩니다.

    정말 그렇습니까?


  • 간단한 Elixir 프로젝트를 만들고 시도하십시오
  • 준비는 이 근처를 참조해 주세요
  • Phoenix
  • 설치

  • $ mix phx.new hello --live
    $ cd hello 
    $ mix ecto.create
    $ mix phx.gen.live Baseball Player players name:string number:integer
    
  • router.ex 변경은이 예제에서 반드시 필요한 단계는 아닙니다.

    lib/hello_web/router.ex
      scope "/", HelloWeb do
        pipe_through :browser
    
        live "/", PageLive, :index
    
        live "/players", PlayerLive.Index, :index # add
        live "/players/new", PlayerLive.Index, :new # add
        live "/players/:id/edit", PlayerLive.Index, :edit # add
    
        live "/players/:id", PlayerLive.Show, :show # add
        live "/players/:id/show/edit", PlayerLive.Show, :edit # add
      end
    

    priv/repo/seeds.exs
    Hello.Repo.insert!(%Hello.Baseball.Player{name: "テッド・ウィリアムズ", number: 9})
    Hello.Repo.insert!(%Hello.Baseball.Player{name: "原辰徳", number: 8})
    
    $ mix ecto.migrate
    $ mix run priv/repo/seeds.exs
    $ iex -S mix
    
    iex> alias Hello.Repo
    Hello.Repo
    
    iex> alias Hello.Baseball.Player
    Hello.Baseball.Player
    
    iex> Player |> Repo.all |> Enum.map(& &1.number)
    [debug] QUERY OK source="players" db=8.4ms decode=1.6ms queue=0.8ms idle=1527.6ms
    SELECT p0."id", p0."name", p0."number", p0."inserted_at", p0."updated_at" FROM "players" AS p0 []
    '\t\b'
    
  • 그래, 역시 그래.
  • iex> IEx.configure(inspect: [charlists: :as_lists])
    :ok
    
    iex> Player |> Repo.all |> Enum.map(& &1.number)   
    [debug] QUERY OK source="players" db=2.6ms idle=1775.7ms
    SELECT p0."id", p0."name", p0."number", p0."inserted_at", p0."updated_at" FROM "players" AS p0 []
    [9, 8]
    

    Wrapping Up


  • 정수의 List를 기대하고 있으면 문자열과 같은 것이 돌아왔다 => 그것은 Installation일지도 모릅니다 (반드시 그럴 것입니다)
  • Enjoy Charlists !
  • Enjoy Elixir !
  • 좋은 웹페이지 즐겨찾기