Làm cách nào tôi có thể nhận xét nhiều dòng trong Ruby?
Làm cách nào tôi có thể nhận xét nhiều dòng trong Ruby?
Câu trả lời:
#!/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.
#
hơn tất cả chúng, chủ yếu là vì nó phân tách trực quan các dòng nhận xét tốt hơn =begin
/ =end
hoặc sử dụng phương pháp tại đây. Và, công việc tốt.
=begin
và =end
không thể đi trước bởi bất kỳ khoảng trắng nào.
=begin...=end
và khối cuối sử dụng #
được chọn bởi ndoc khi tạo tài liệu.
=begin
My
multiline
comment
here
=end
#
và khoảng trắng trước mỗi dòng đơn? Đó là rất nhiều tổ hợp phím đặc biệt là nếu tôi bắt đầu thêm ngắt dòng.
Bất chấp sự tồn tại của =begin
và =end
, cách nhận xét bình thường và đúng đắn hơn là sử dụng #
trên mỗi dòng. Nếu bạn đọc nguồn của bất kỳ thư viện ruby nào, bạn sẽ thấy rằng đây là cách nhận xét nhiều dòng trong hầu hết các trường hợp.
#
vì nó rõ ràng hơn. Khi bình luận mã, điều quan trọng là phải làm rõ điều đó là những gì đã xảy ra. Nếu bạn đang xem mã mà không có lợi ích của việc tô màu mã trong trình chỉnh sửa bằng cách sử dụng =begin/=end
có thể khiến bạn khó hiểu tại sao mã bị bỏ qua.
#
bình luận. (Tôi đang bối rối tại sao điều này có hai lần tải xuống. Tôi đoán cộng đồng Stack Overflow đôi khi phải hiểu sai!)
3 == three
nơi def three; 1 + 1 + 1 end
. Do đó cả hai đều hợp lệ. Ai quan tâm? Sử dụng 3
!
vi
trên máy chủ sản xuất. Trong trường hợp đó, dù sao đi nữa, có lẽ bạn không nên thực hiện sự phát triển của mình ở đó.
#!/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!"
/*I am a\n#nested\ncomment, which really serves no purpose*/
/*I am bound /*to*/ FAIL!*/
Sẽ có ý nghĩa nếu bạn có các nhận xét dòng đơn và mã bên trong một nhận xét nhiều dòng, chẳng hạn như một chức năng với tài liệu mà bạn không muốn mọi người sử dụng, nhưng bạn cũng không muốn xóa nó khỏi tệp.
Sử dụng một trong hai
= bắt đầu Điều này Là một bình luận khối = kết thúc
hoặc là
# Điều này # Là # a # bình luận # khối
là hai cái duy nhất hiện đang được hỗ trợ bởi ndoc, đó là một lý do tốt để chỉ sử dụng những thứ này tôi nghĩ.
=begin
hoặc #
là cả hai <<-DOC
và "
cú pháp sẽ tạo ra các chuỗi ký tự vô dụng khi thực thi.
=begin
(some code here)
=end
và
# This code
# on multiple lines
# is commented out
đều đúng Ưu điểm của loại bình luận đầu tiên là khả năng chỉnh sửa, dễ dàng bỏ qua hơn vì ít ký tự bị xóa. Ưu điểm của loại bình luận thứ hai là khả năng đọc được đọc từng dòng mã, dễ dàng hơn nhiều để nói rằng một dòng cụ thể đã được nhận xét. Cuộc gọi của bạn nhưng hãy nghĩ về những người đến sau bạn và việc họ đọc và duy trì dễ dàng như thế nào.
=begin
và =end
không truyền tải một cách trực quan rằng những gì ở giữa là một nhận xét ... Clojure, ví dụ, sử dụng (comment :whatever)
mà tại khách hàng tiềm năng nói lên ý nghĩa của nó: stackoverflow.com/questions/1191628/block-comments-in-clojure
Đây là một ví dụ :
=begin
print "Give me a number:"
number = gets.chomp.to_f
total = number * 10
puts "The total value is : #{total}"
=end
Tất cả mọi thứ bạn đặt ở giữa =begin
và =end
sẽ được coi là một nhận xét bất kể có bao nhiêu dòng mã nằm giữa.
Lưu ý: Đảm bảo không có khoảng cách giữa =
và begin
:
=begin
= begin
=begin
comment line 1
comment line 2
=end
chắc chắn = bắt đầu và = kết thúc là điều đầu tiên trên dòng đó (không có dấu cách)
Trong trường hợp ai đó đang tìm cách nhận xét nhiều dòng trong mẫu html trong Ruby on Rails, có thể có một vấn đề với = started = end, chẳng hạn:
<%
=begin
%>
... multiple HTML lines to comment out
<%= image_tag("image.jpg") %>
<%
=end
%>
sẽ thất bại vì%> đóng image_tag.
Trong trường hợp này, có thể tranh cãi liệu điều này có bình luận hay không, nhưng tôi thích kèm theo phần không mong muốn bằng một khối "nếu sai":
<% if false %>
... multiple HTML lines to comment out
<%= image_tag("image.jpg") %>
<% end %>
Điều này sẽ làm việc.
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
Lưu ý rằng tại thời điểm của bài đăng, công cụ stackoverflow không hiển thị màu cú pháp chính xác. Kiểm tra cách nó hiển thị trong trình soạn thảo lựa chọn của bạn là một bài tập. ;)
.pp
bản kê khai của Puppet (dựa trên cú pháp giống như Ruby), bạn có thể sử dụng các nhận xét khối kiểu c/**/