엘릭서-인장

이 장에서는 텍스트 표현 작업을 위해 언어에서 제공하는 메커니즘 인시길을 살펴 보겠습니다. 시길은 물결표 (~) 문자로 시작하고 그 뒤에 문자 (시길을 식별 함)와 구분 기호가 이어집니다. 선택적으로 최종 구분 기호 뒤에 수정자를 추가 할 수 있습니다.

정규식

Elixir의 정규식은 인장입니다. 우리는 String 장에서 그것들이 사용되는 것을 보았습니다. Elixir에서 정규식을 어떻게 사용할 수 있는지 예제를 다시 살펴 보겠습니다.

# A regular expression that matches strings which contain "foo" or
# "bar":
regex = ~r/foo|bar/
IO.puts("foo" =~ regex)
IO.puts("baz" =~ regex)

위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.

true
false

Sigils는 8 개의 다른 구분자를 지원합니다.

~r/hello/
~r|hello|
~r"hello"
~r'hello'
~r(hello)
~r[hello]
~r{hello}
~r<hello>

다른 구분 기호를 지원하는 이유는 다른 구분 기호가 다른시길에 더 적합 할 수 있기 때문입니다. 예를 들어 정규식에 괄호를 사용하는 것은 정규식 내부의 괄호와 혼합 될 수 있으므로 혼란스러운 선택 일 수 있습니다. 그러나 다음 섹션에서 볼 수 있듯이 괄호는 다른시길에 유용 할 수 있습니다.

Elixir는 Perl 호환 정규식을 지원하고 수정 자도 지원합니다. 여기서 정규식 사용에 대한 자세한 내용을 읽을 수 있습니다 .

문자열, 문자 목록 및 단어 목록

정규 표현식 외에 Elixir에는 3 개의 내장시길이 더 있습니다. 인장을 살펴 보겠습니다.

문자열

~ s시길은 큰 따옴표처럼 문자열을 생성하는 데 사용됩니다. ~ s시길은 예를 들어 문자열에 큰 따옴표와 작은 따옴표가 모두 포함 된 경우 유용합니다.

new_string = ~s(this is a string with "double" quotes, not 'single' ones)
IO.puts(new_string)

이시길은 문자열을 생성합니다. 위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.

"this is a string with \"double\" quotes, not 'single' ones"

문자 목록

~ c시길은 문자 목록을 생성하는 데 사용됩니다.

new_char_list = ~c(this is a char list containing 'single quotes')
IO.puts(new_char_list)

위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.

this is a char list containing 'single quotes'

단어 목록

~ w시길은 단어 목록을 생성하는 데 사용됩니다 (단어는 일반 문자열 임). ~ w 기호 내에서 단어는 공백으로 구분됩니다.

new_word_list = ~w(foo bar bat)
IO.puts(new_word_list)

위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.

foobarbat

~ w시길은 또한 c, sa 수정 자 (각각 문자 목록, 문자열 및 원자), 결과 목록 요소의 데이터 유형을 지정합니다.

new_atom_list = ~w(foo bar bat)a
IO.puts(new_atom_list)

위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.

[:foo, :bar, :bat]

Sigils에서 보간 및 이스케이프

소문자시길 외에도 Elixir는 이스케이프 문자와 보간을 처리하기 위해 대문자시길을 지원합니다. ~ s와 ~ S는 모두 문자열을 반환하지만 전자는 이스케이프 코드와 보간을 허용하지만 후자는 그렇지 않습니다. 이것을 이해하기위한 예를 생각해 봅시다.

~s(String with escape codes \x26 #{"inter" <> "polation"})
# "String with escape codes & interpolation"
~S(String without escape codes \x26 without #{interpolation})
# "String without escape codes \\x26 without \#{interpolation}"

커스텀시길

사용자 지정시길을 쉽게 만들 수 있습니다. 이 예에서는 문자열을 대문자로 변환하는시길을 만듭니다.

defmodule CustomSigil do
   def sigil_u(string, []), do: String.upcase(string)
end

import CustomSigil

IO.puts(~u/tutorials point/)

위의 코드를 실행하면 다음 결과가 생성됩니다.

TUTORIALS POINT

먼저 CustomSigil이라는 모듈을 정의하고 해당 모듈 내에 sigil_u라는 함수를 생성했습니다. 기존시길 공간에는 ~ u시길이 없으므로 사용하겠습니다. _u는 물결표 뒤의 문자로 u를 사용하고자 함을 나타냅니다. 함수 정의는 두 개의 인수, 입력 및 목록을 가져야합니다.