- vừa được xem lúc

Bạn đã sử dụng hết tính năng của Comment trong Ruby?

0 0 25

Người đăng: Quang Vo

Theo Viblo Asia

Chúng ta đã quá quen khi sử dụng comment trong code ruby và mục đích của nó thường dùng để ghi chú hoặc giải thích thêm về mục đích của đoạn code và comment sẽ không được thông dịch. Vậy comment có thể làm được những gì khác ngoài việc chỉ đơn giản là đoạn chú thích thôi. Cùng tìm hiểu tiếp nhé.

Multi-line comments

Thường thì khi chúng ta cần comment trên nhiều line thì chỉ đơn giản là thêm dấu # ở phía trước mỗi line. Ví dụ như:

#!/usr/bin/env ruby # This is
# multi-line
# comments puts "Running!"

Cách viết trên hoàn toàn đúng nhưng chúng ta có thể viết lại đoạn comment trên bằng cách khác tốt hơn như:

#!/usr/bin/env ruby =begin This is multi-line comments
=end puts "Running!"

Đoạn code trên khi nhìn vào rất dễ đọc đặc biệt là khi chúng ta nhiều line hơn. Ngoài ra còn có cách khác đó là có thể viết nhiều comment ở cuối file như sau:

#!/usr/bin/env ruby
puts "Hello" __END__
Những đoạn code nằm phía sau __END__ đều được xem như là
comment và không được biên dịch.

Một sự lựa chọn khác để có thể comment trên nhiều line là sử dụng docstring.

#!/usr/bin/env ruby
<<-DOC Đoạn này dùng để test chức năng comment trên nhiều line sử dụng docstring
DOC puts "docstring"

Indentation warning comment

Có thể bật tính năng warning indent bằng cách thêm đoạn comment # warn_indent: true ở đầu file ruby bạn cần bật. Khi chúng ta thêm đoạn comment trên vào thì nếu có lỗi về indent thì sẽ có message warning hiển thị ở console.

Ta có file warn_ident.rb:

#!/usr/bin/env ruby
def hello puts "hello world" end

Trước khi bật warn_indent:

NO OUTPUT

Sau khi bật warn_indent:

warn-ident.rb:5: warning: mismatched indentations at 'end' with 'def' at 3

Frozen String Literal Comment

Trong ruby, mặc định các chuỗi string đều là mutable và mỗi lần tạo mới một string giống nhau thì sẽ tạo mới một object. Và đó cũng là lí do chính dẫn đến tốn nhiều bộ nhớ trong ngôn ngữ ruby.

Và để khắc phục vấn đề này đơn giản chúng ta thêm đoạn comment phía dưới vào đầu file

# frozen_string_literal: true

Khi thêm đoạn comment trên vào thì các string object có giá trị giống nhau chỉ được khởi tạo chỉ một lần duy nhất.

Và đoạn comment trên sẽ giúp giảm đi 20% dung lượng bộ nhớ sử dụng.

Khi không sử dụng frozen_string_literal

#!/usr/bin/env ruby puts "hello".object_id # 60
puts "hello".object_id # 80

Khi có sử dụng frozen_string_literal

#!/usr/bin/env ruby # frozen_string_literal: true puts "hello".object_id # 60
puts "hello".object_id # 60

Như ví dụ trên, khi chúng ta không sử dụng frozen_string_literal thì mặc dù 2 string có value giống nhau nhưng vẫn có đến 2 object được tạo. Còn ở ví dụ sau, chúng ta có sử dụng frozen_string_literal: true thì chỉ có một object được tạo ra. Vậy nên khi làm việc với string thì mọi người cũng nên cân nhắc để thêm comment frozen_string_literal: true ở đầu file để giảm thiệu bộ nhớ nhé.

File Encoding Comment

Ở ruby 2.0 thì encoding mặc định cho string sẽ là UTF-8. Ở version thấp hơn như 1.9.x thì encoding mặc định sẽ là US-ASCII. Đôi lúc chúng ta muốn sử dụng một Encoding khác ngoài những encoding mặc định bằng cách

# encoding: ISO-8859-1

hoặc có thể viết theo format sau:

# -*- coding: UTF-8 -*- or # coding: UTF-8

Hãy thử xem đoạn code phía dưới:

# -*- coding: ASCII -*- puts "Édsf"

Khi có nhiều comment về change default encoding trong cùng 1 file thì trình biên dịch sẽ chỉ nhận comment đầu tiên và các comment còn lại sẽ bị loại bỏ.

Đoạn code trên sẽ bắn lỗi bởi vì "É" không phải là kí tự có trong bảng ASCII, lỗi sẽ như sau:

➜ Desktop ruby encoding.rb
encoding.rb:3: invalid multibyte char (US-ASCII)
encoding.rb:3: invalid multibyte char (US-ASCII)

Chúng ta thử chuyển encoding sang UTF-8 xem thế nào nhé:

# -*- coding: UTF-8 -*- puts "Édsf"

Kết quả sau khi chạy file

➜ Desktop ruby encoding.rb
Édsf

Mọi người có thể xem danh sách các encoding support bởi ruby ở đây

Trên đây là một số tính năng khác của comment trong Ruby, hy vọng mọi người thể hiểu hơn về comment. Cảm ơn mn đã đọc(bow)(bow)

Happy Coding!

Tham khảo:

Bình luận

Bài viết tương tự

- vừa được xem lúc

Bài toán tìm đường đi ngắn nhất với giải thuật Dijkstra

Với các bạn sinh viên chuyên ngành công nghệ thông tin, chắc không lạ gì với bài toán tìm đường đi ngắn nhất (Shortest Path Problems) trong đồ thị trọng số nữa. Ở bài viết lần này, mình sẽ làm 3 việc:.

0 0 135

- vừa được xem lúc

Tôi cá là bạn không biết những điều này - Ruby on rails ( Phần 2)

Các bạn có thể theo dõi phần 1 ở đây :. https://viblo.asia/p/toi-ca-la-ban-khong-biet-nhung-dieu-nay-ruby-on-rails-phan-1-WAyK8DDeKxX. 5.

0 0 222

- vừa được xem lúc

Những thay đổi trong ruby 3.0

. 2020 là một năm lớn đối với cộng đồng Ruby. Những người sáng lập Ruby có một món quà thực sự tuyệt vời cho chúng ta vào giáng sinh với việc phát hành Ruby 3.

0 0 47

- vừa được xem lúc

Có gì đặc biệt trong phiên bản Ruby 3x3 ?

Hello guys, chắc hẳn thời gian vừa rồi chúng ta cũng đã nghe qua thông tin Ruby sắp cho ra mắt Ruby version 3, hay còn được gọi là ruby 3x3, vậy liệu Ruby version 3 này có gì mới, và có những update nào đáng phải kể đến, và tại sao mọi người lại gọi nó là ruby version 3x3, thì trong bài ngày hôm nay

0 0 43

- vừa được xem lúc

Cách sử dụng class Time & Date trong Ruby (Phần 1)

Time là một class trong Ruby, nó sẽ giúp chỉnh sửa format, trích xuất thông tin một cách hiệu quả theo ý của bạn. . Topic hôm nay chúng ta có gì nào. .

0 0 97

- vừa được xem lúc

Ruby 3.0 có gì mới

Ruby 3.0.0 đã được ra mới được ra mắt vào tháng 12/2020, mục tiêu của bản 3.0.

0 0 41