Inspect.Opts

Inspect.Opts

Inspect 프로토콜이 사용하는 옵션을 정의하는 구조체예요. inspect할 때 어떻게 표현할지를 이 옵션들로 조절할 수 있어요. 사용 가능한 필드는 다음과 같아요.

출처: Inspect.Opts

본문

  • :base — 정수와 binary를 :binary, :octal, :decimal, 또는 :hex로 출력해요. 기본값은 :decimal이에요.
  • :binaries:as_binaries면 모든 binary를 비트 문법으로 출력해요. :as_strings면 모든 binary를 문자열로 출력하고, 출력 불가능한 바이트는 이스케이프해요. 기본값인 :infer에서는 :base:decimal이고 출력 가능하면 문자열로, 그렇지 않으면 비트 문법으로 출력해요. 문자열이 언제 출력 가능한지 알아보려면 String.printable?/1을 보세요.
  • :charlists:as_charlists면 모든 charlist를 charlist로 출력하고, 출력 불가능한 코드 포인트는 이스케이프해요. 나머지 리스트는 리스트로 출력해요. :as_lists면 모든 리스트를 리스트로 출력해요. 기본값인 :infer에서는 출력 가능하면 charlist로, 그렇지 않으면 리스트로 출력해요. charlist가 언제 출력 가능한지 알아보려면 List.ascii_printable?/1을 보세요.
  • :custom_options — (v1.9.0부터) 사용자가 정의한 커스텀 옵션을 저장하는 키워드 목록이에요. 중첩된 구조체를 위해 Inspect 프로토콜을 구현할 때 커스텀 옵션을 통과시키는 데 유용해요. 몇 가지 미리 정의된 키를 지원해요.
    • :sort_maps — (v1.14.4부터) true로 설정하면 맵의 키-값 쌍을 정렬해요. 맵의 키 순서는 무작위라서, 테스트에서 맵 inspect를 결정적으로 만들 때 유용해요.
    • :inspect_fun — (v1.9.0부터) 대수 문서를 만드는 함수예요. 기본값은 Inspect.Opts.default_inspect_fun/0이에요.
  • :limit — 튜플·bitstring·맵·리스트 등 항목 모음에서 inspect할 항목 수를 제한해요. 다만 출력 가능한 문자열과 charlist는 :printable_limit 옵션을 사용해요. 양의 정수나 :infinity를 받아요. 중첩 컬렉션을 다루기 더 나은 기본값이라 Elixir v1.20.0부터 기본값이 200이에요.
  • :pretty — true로 설정하면 pretty printing을 켜요. 기본값은 false예요.
  • :printable_limit — 출력 가능한 문자열과 charlist에서 inspect할 문자 수를 제한해요. String.printable?/1List.ascii_printable?/1로 주어진 문자열·charlist가 출력 가능한지 확인할 수 있어요. 특정 숫자로 제한하고 싶지 않으면 :infinity를 쓰세요. 양의 정수나 :infinity를 받아요. 기본값은 4096이에요.
  • :safe — false면 구조체 inspect 실패가 Inspect.Error 예외로 감싸지 않고 오류로 던져져요. 커스텀 inspect 구현의 실패·크래시를 디버깅할 때 유용해요. 기본값은 true예요.
  • :structs — false면 구조체가 inspect 프로토콜로 포맷되지 않고 맵으로 출력돼요. 기본값은 true예요.
  • :syntax_colors — 색상 키워드 목록으로 설정하면 출력에 색을 입혀요. 키는 타입이고 값은 각 타입에 쓸 색이에요(예: [number: :red, atom: :blue]). 타입에는 :atom, :binary, :boolean, :list, :map, :number, :regex, :string, :tuple 또는 :variable, :call, :operator 같은 AST를 나타내는 타입이 있어요. 커스텀 데이터 타입이 자신만의 옵션을 제공할 수도 있어요. 색은 IO.ANSI.format/1이 받는 어떤 IO.ANSI.ansidata/0든 될 수 있어요. 기본 색 목록은 IO.ANSI.syntax_colors/0에서 얻을 수 있어요.
  • :width — pretty가 true이거나 IO 장치에 출력할 때 줄당 문자 수예요. 0으로 설정하면 각 항목을 자기 줄에 강제로 출력해요. 특정 숫자로 제한하고 싶지 않으면 :infinity를 쓰세요. 기본값은 80이에요.

더 알아보기

  • Inspect — Inspect.Opts를 사용하는 프로토콜
  • Inspect.Algebra — inspect 표현을 만드는 데 쓰이는 대수 문서
  • IO.ANSI:syntax_colors 옵션과 관련된 ANSI 색상 기능