엘릭서-인장
이 장에서는 텍스트 표현 작업을 위해 언어에서 제공하는 메커니즘 인시길을 살펴 보겠습니다. 시길은 물결표 (~) 문자로 시작하고 그 뒤에 문자 (시길을 식별 함)와 구분 기호가 이어집니다. 선택적으로 최종 구분 기호 뒤에 수정자를 추가 할 수 있습니다.
정규식
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, s 과 a 수정 자 (각각 문자 목록, 문자열 및 원자), 결과 목록 요소의 데이터 유형을 지정합니다.
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를 사용하고자 함을 나타냅니다. 함수 정의는 두 개의 인수, 입력 및 목록을 가져야합니다.