Nice programing

Ruby의 % q / % Q 인용 방법의 사용 사례는 무엇입니까?

nicepro 2020. 11. 1. 18:40
반응형

Ruby의 % q / % Q 인용 방법의 사용 사례는 무엇입니까?


나는 Thomas의 Programming Ruby 1.9를 읽었으며 구분 된 단일 및 이중 인용 방법 ( %q / %Q)을 찾았습니다 . 나는 다른 Ruby 언어 참조에서도 그것들을 알고 있습니다.

%q/I'm acting like a single-quoted string/

%Q|"I'm acting like a double-quoted string" --Anonymous|

나는 오랫동안 Ruby를 사용 하지 않았지만 프로덕션 코드에서이 인용 방법을 본 적이 없습니다 .

백 슬래시로 따옴표내부적으로 이스케이프하지 않도록 하는 명백한 기능 외에 일반 작은 따옴표 또는 큰 따옴표에 대한이 방법의 일반적인 사용 사례는 무엇입니까? 일반적으로 단일 또는 여러 줄 문자열에 사용됩니까? 여러 줄 문자열에 사용되는 경우 HEREDOC 문자열보다 선호됩니까? 일반적으로 발견되는 특정 루비 관용구가 있습니까?


인용 방법이 이미 "다친"경우 JavaScript로 HTML을 이스케이프하는 데 매우 유용합니다.

link = %q[<a href="javascript:method('call')">link</a>]

또한 여러 줄 SQL 문으로 작업 할 때 매우 유용하다는 것을 발견했습니다.

execute(%Q[
  INSERT INTO table_a (column_a)
    SELECT value
      FROM table_b
      WHERE key='value'
])

장점은 쿼리에 사용 된 인용 유형에주의를 기울일 필요가 없다는 것입니다. 단일, 이중 또는 둘 다에서 작동합니다. 또한 HEREDOC 스타일 방법보다 훨씬 덜 소란 스럽습니다.

Ruby는 %r정규 표현식을 구성 할 수있는 이와 같은 다른 편리한 방법을 제공합니다 . http://그렇지 않으면 이스케이프해야 할 것과 같은 것을 처리하는 것을 작성하려고 할 때 슬래시 염 을 피합니다.


개요

"내부적으로 이스케이프 따옴표를 피하십시오"와 이전에 @tadman에서 제공 한 예제 외에도 다른 사용 사례가 있습니다.

  • 생성기와 동일한 언어로 코드 자동 생성 (예 : Ruby 생성 Ruby)
  • 텍스트 편집기의 구문 강조 기능을 혼동하지 않는 깔끔한 형식의 코드 제공
  • 여러 스토리지 레이어를 통과해야 할 수있는 코드 블록 (예 : 웹 사이트와 상호 작용하는 데이터베이스 또는 서브 쉘과 상호 작용하는 텍스트 편집기와 상호 작용하는 스 니펫 관리 시스템 등)을 저장할 수 있습니다.

세부

이 접근 방식은 다른 언어로 상용구 코드를 작성하는 도구 또는 IDE 또는 텍스트 편집 기용 코드 조각을 관리하는 도구를 포함하되 이에 국한되지 않는 자동화 된 코드 생성을 수행하는 모든 종류의 도구와 잘 작동하는 범용적이고 강력한 관용구입니다. .

@tadman에서 이미 제공 한 예제 외에도 생성되는 코드가 생성 프로그램의 코드와 동일하거나 실질적으로 유사한 구문 인 코드를 생성하는 일반적인 경우가 있습니다.

이러한 경우 솔루션은 따옴표를 이스케이프하기 위해 백 슬래시를 사용하지 않도록하는 것보다 더 많은 일을합니다. 이와 같은 솔루션이 없으면 생성 된 코드를 유지 관리하기가 극도로 어려울 수 있습니다.

이에 대한 예를 보려면 다음 참고 자료를 참조하십시오.

참고 문헌

[예를 들어,

]


gemspec의 요약 / 설명 섹션을 위해 gemspec을 생성 할 때 기본적으로 bundler와 jeweler가 % q를 사용한다는 점은 주목할 가치가 있습니다. 이것은 누군가가 요약이나 설명에 따옴표를 사용하여 gemspec을 깨는 것을 방지합니다.


나는 이것이 오래된 스레드라는 것을 알고 있지만 시스템 명령을 호출하고 다음과 같이 일부 값을 보간하고 싶을 때 프로덕션에서 사용했습니다 .

 system(%Q(ffmpeg -y -i "#{input_filepath}" -qscale:a 2 "#{output_filepath}"))

매우 편리합니다.


문자열에 작은 따옴표 또는 큰 따옴표가 포함 된 경우 유용합니다. 이런 일이 자주 발생하는 것은 아니지만이 기술은 매우 유용합니다.

참고 URL : https://stackoverflow.com/questions/10144543/what-is-the-use-case-for-rubys-qq-quoting-methods

반응형