루비에서 여러 줄 주석?


746

Ruby에서 여러 줄을 주석으로 처리하려면 어떻게합니까?


7
경우에는 사람이 꼭두각시에 여러 의견을 찾고이 일인 .pp매니페스트 (A 기반으로 루비와 같은 구문) 당신은 C 스타일 블록 주석 사용할 수 있습니다 /**/
msanford

6
루비의 여러 줄 주석이 코드 블록과 매우 흡사하다는 것은 다소 불행한 일입니다. 그리고이 질문 (그리고 받아 들여진 대답)에 주어진 높은 점수를 감안할 때 루비 구문을 연구하는 사람들은 그것에 대해 조금 생각해야합니다.
Nick

답변:


1354
#!/usr/bin/env ruby

=begin
Every body mentioned this way
to have multiline comments.

The =begin and =end must be at the beginning of the line or
it will be a syntax error.
=end

puts "Hello world!"

<<-DOC
Also, you could create a docstring.
which...
DOC

puts "Hello world!"

"..is kinda ugly and creates
a String instance, but I know one guy
with a Smalltalk background, who
does this."

puts "Hello world!"

##
# most
# people
# do
# this


__END__

But all forgot there is another option.
Only at the end of a file, of course.
  • 이것은 스크린 샷을 통해 보이는 모양입니다. 그렇지 않으면 위의 주석이 어떻게 보이는지 해석하기가 어렵습니다. 확대하려면 클릭하십시오 .

텍스트 편집기의 주석


26
나는 #주석 처리 된 행을 시각적으로 =begin/ =end또는 here-to 방법 보다 시각적으로 분리하기 때문에 대부분을 사용하는 것을 선호합니다 . 그리고 잘 했어.
Tin Man

38
이 답변이 구문 형광펜의 일부 결함을 명백하게한다는 것은 흥미 롭습니다.
ZoFreX

69
잊지 마십시오 =begin=end공백 앞에 할 수 없습니다.
bergie3000

15
그리고 방법 내에서 = begin = end를 사용할 수 없습니다
Albert Català

7
위의 예제 코드에서 사용하는 첫 번째 =begin...=end블록과 마지막 블록 만 #설명서를 생성 할 때 rdoc에 의해 선택됩니다.
Tin Man

126
=begin
My 
multiline
comment
here
=end

4
물론 할 있습니다. 효과가있다. 이것은 매우 드 rare니다. 못 생겼어 어쩌면 나는 내 방식에 갇혀 있습니까?
David J.

53
= begin 또는 = end 앞에 탭을 포함하면 주석이 작동하지 않는 것으로 나타났습니다. = begin 및 = end 각각은 각 줄의 시작 부분에 작성해야합니다.
Rose Perrone 2016 년

1
당신은 혼자가 아닙니다 @DavidJames. 나는 개인적으로 편집자들이 모두 댓글을 달도록 선택했습니다. CMD + / 또는 ALT + /는 대부분의 규칙입니다.
anon58192932

1
@DavidJames, 대신 하시겠습니까? #모든 한 줄 앞에 a 와 공백을 입력 하시겠습니까? 특히 줄 바꿈을 추가하기 시작하면 많은 키 입력이 발생합니다.
Paul Draper

57

=begin및 의 존재에도 불구 하고 =end, 일반적이고 더 정확한 주석 처리 방법은 #각 줄에 를 사용하는 것 입니다. 루비 라이브러리의 소스를 읽으면 거의 모든 경우에 여러 줄 주석이 수행되는 방식임을 알 수 있습니다.


4
진술 문의 "더 정확한"부분에 대한 주장은 둘 다 유효하기 때문에 얻을 수 있습니다. 나는 #더 분명하기 때문에 사용하는 것을 선호합니다 . 코드에 주석을 달 때 그것이 일어난 일을 분명히하는 것이 중요합니다. 편집기를 사용하여 코드 색상을 표시하지 않고 코드를 보는 경우 코드 =begin/=end가 무시되는 이유를 파악하기가 어려울 수 있습니다.
Tin Man

6
물론 주석을 작성하는 많은 "유효한"방법이 있습니다. 여기서 실용하자. 실제로 Ruby를 쓰고 다른 사람들이 쓴 것을 읽으면 #주석 을 사용해야합니다 . (이것에 두 개의 다운 보트가있는 이유가 궁금합니다. Stack Overflow 커뮤니티가 때때로 잘못 이해해야 할 것 같습니다!)
David J.

4
3 == three어디서 def three; 1 + 1 + 1 end? 따라서 둘 다 유효합니다. 무슨 상관이야? 사용 3!
David J.

1
@theTinMan 사실, 일반적으로 (제 경험상) 구문 강조 표시가 부족한 유일한 시간 vi은 프로덕션 서버에서 사용할 때 입니다. 어쨌든 어쨌든 개발을 수행해서는 안됩니다.
Parthian Shot

1
@DavidJames 당신의 예제는 더 장황하기 때문에 말도 안됩니다. 모든 줄에 해시를 넣는 것은 더 긴 주석에 대해 더 장황합니다. 그리고 누군가가 "/ dev / urandom이 비 차단 암호화 사운드 PRNG에 사용되었습니다.이 코드를 만지지 마십시오-그것은 마법입니다"라고 루비를 쓰는 것이 나의 시도라고 생각합니다. 내 선명도가 부족한 것보다 당신의 요점이 항상 유효하지 않다는 것은 아닙니다. 코드를 주석 처리 할 때 단지 좋은 것입니다. 그러나 귀하의 의견이 ... 의견이라면 ... 어느 쪽이든 분명해야합니다.
Parthian Shot

20
#!/usr/bin/env ruby

=begin
Between =begin and =end, any number
of lines may be written. All of these
lines are ignored by the Ruby interpreter.
=end

puts "Hello world!"

1
루비 멀티 라인 주석에서 중첩이 뭔지 몰랐기 때문에 +1.
Parthian Shot

2
@ParthianShot-일이 아닙니다-줄의 시작 부분에 있지 않으면-= 시작과 = 끝은 무시됩니다. 중첩이 불가능한 것 같습니다.
skagedal

주석 내에 주석을 중첩하면 단일 주석 또는 종료 할 주석이없는 주석을 종료하려고 할 때 구문 오류가 발생합니다. /*I am a\n#nested\ncomment, which really serves no purpose*/ /*I am bound /*to*/ FAIL!*/한 줄 주석과 여러 줄 주석 안에 코드가있는 경우 (예 : 사람들이 사용하기를 원하지 않지만 파일에서 주석을 제거하지 않으려는 설명서 기능).
Chinoto Vokro

17

다음 중 하나를 사용하십시오.

= 시작
이
이다
ㅏ
논평
블록
= 끝

또는

# 이
#은
# ㅏ
댓글
# 블록

rdoc에 의해 현재 지원되는 유일한 두 가지입니다. 이것이 내가 생각하는 것만 사용하는 좋은 이유입니다.


1
=begin또는 에 충실해야하는 또 다른 좋은 이유 #는 구문 <<-DOC"구문 모두 실행시 쓸모없는 문자열 리터럴을 생성하기 때문입니다.
Cœur

13
=begin
(some code here)
=end

# This code
# on multiple lines
# is commented out

둘 다 맞습니다. 첫 번째 주석 유형의 장점은 편집 가능성입니다. 삭제되는 문자 수가 적기 때문에 주석을 해제하는 것이 더 쉽습니다. 두 번째 유형의 주석의 장점은 가독성입니다. 코드를 한 줄씩 읽으면 특정 행이 주석 처리되어 있음을 훨씬 쉽게 알 수 있습니다. 당신의 부름이지만 누가 당신을 쫓고 있는지 그리고 그들이 읽고 유지하는 것이 얼마나 쉬운 지 생각하십시오.


IMO, =begin그리고 =end그 사이에있는 것이 주석이라는 것을 시각적으로 전달하지 않습니다 ... Clojure, 예를 들어 (comment :whatever)리드가 의미하는 바를 사용합니다 : stackoverflow.com/questions/1191628/block-comments-in-clojure
David J.

1
Java, C 및 C ++에서는 "/ *"및 "* /"를 수행하지 마십시오. Ruby 구문과 마찬가지로이 두 문자 사이에 큰 코드 블록이 주석 처리 될 수 있으며 언어의 기본 사항을 알고있는 사람은 모두 그 의미를 알고 있습니다.
La-comadreja

1
구문 색상 표시 (예 : vim)는 첫 번째 유형이 주석임을 나타냅니다. 이 경우 첫 번째 유형에는 단점이 없습니다.
Camille Goudeseune

12

예를 들면 다음과 같습니다.

=begin 
print "Give me a number:"
number = gets.chomp.to_f

total = number * 10
puts  "The total value is : #{total}"

=end

모든 것은 당신이 사이에 배치 =begin=end관계없이 사이에 포함 몇 줄의 코드 주석으로 처리됩니다.

참고 := 와 사이에 공백이 없는지 확인하십시오 begin.

  • 옳은: =begin
  • 잘못된: = begin

5

=begin comment line 1 comment line 2 =end = begin 및 = end가 해당 줄의 첫 번째 항목인지 확인하십시오 (공백 없음).


2

누군가가 Ruby on Rails의 html 템플릿에서 여러 줄을 주석 처리하는 방법을 찾고 있다면 = begin = end와 같은 문제가있을 수 있습니다.

<%
=begin
%>
  ... multiple HTML lines to comment out
  <%= image_tag("image.jpg") %>
<%
=end
%>

%>가 image_tag를 닫아서 실패합니다.

이 경우, 이것이 주석 처리되는지 아닌지에 대해서는 논쟁의 여지가 있지만, 원치 않는 섹션을 "if false"블록으로 묶는 것을 선호합니다.

<% if false %>
  ... multiple HTML lines to comment out
  <%= image_tag("image.jpg") %>
<% end %>

작동합니다.


0
  def idle
    <<~aid
    This is some description of what idle does.

    It does nothing actually, it's just here to show an example of multiline
    documentation. Thus said, this is something that is more common in the
    python community. That's an important point as it's good to also fit the
    expectation of your community of work. Now, if you agree with your team to
    go with a solution like this one for documenting your own base code, that's
    fine: just discuss about it with them first.

    Depending on your editor configuration, it won't be colored like a comment,
    like those starting with a "#". But as any keyword can be used for wrapping
    an heredoc, it is easy to spot anyway. One could even come with separated
    words for different puposes, so selective extraction for different types of
    documentation generation would be more practical. Depending on your editor,
    you possibly could configure it to use the same syntax highlight used for
    monoline comment when the keyword is one like aid or whatever you like.

    Also note that the squiggly-heredoc, using "~", allow to position
    the closing term with a level of indentation. That avoids to break the visual reading flow, unlike this far too long line.
    aid
  end

게시 시점에 stackoverflow 엔진은 구문 색상을 올바르게 렌더링하지 않습니다. 선택한 편집기에서 렌더링하는 방법을 테스트하는 것은 연습입니다. ;)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.