10 Weird Things About Ruby That You Should Know
Bài đăng này đã không được cập nhật trong 7 năm
Ruby là một ngôn ngữ tuyệt vời với nhiều điều thú vị mà có thể bạn chưa từng thấy. Trong bài viết này tôi sẽ đưa ra cho các bạn một số điều thú vị mà tôi thấy được.
1. Heredoc + Method
Nếu bạn có một số dữ liệu, và bạn muốn nhúng vào chương trình, bạn có thể dùng "heredoc"
input = << -IN
XBC
SSSS
QQQQ
IN
Đoạn code trên sẽ trả về một chuỗi. Nhưng bạn muốn xử lý chuỗi ở trên, ví dụ tách chuỗi trên thành mảng. Bạn có thể làm như sau:
input = << -IN.split
XBC
SSSS
QQQQ
IN
2. Call a Method Using Double Colon
"abc"::size
# 3
[1,2,3,4,5]::size
# 5
3. Puts with Multiple Arguments
Khá đơn giản nhưng sẽ hữu ích trong 1 số tình huống.
puts 1,2,3
1
2
3
5. Special Global Variables
$1, $2 ...
Các biến trên không giống với các biến ta thường gawph trong ruby. Chúng được gọi là ‘method-local’ & ‘thread-local’
Và được định nghĩa tại đây
6. Shovel Method on Strings
"" << 97
# a
Đoạn code trên lúc biên dịch sẽ được hiểu 97 là a, 1 ký tự của ASCII Hoặc 1 cách khác.
97.chr
# a
7. The RbConfig Module
RbConfig là một module không có document và nó chưa một số thông tin về bản cài đặt ruby của bạn.
RbConfig.constants
[:TOPDIR, :DESTDIR, :CONFIG, :MAKEFILE_CONFIG]
Hoặc
RbConfig::CONFIG['host_os']
# "linux-gnu"
RbConfig::CONFIG['ruby_version']
# "2.4.0"
8. Spaces, Spaces Everywhere!
Bạn có thể để bao nhiêu khoảng trắng cũng được vào giữa method và object.
a = [1,2,3]
a [0]
a .size
a . empty?
Và vẫn đảm bảo syntax của ruby.
8. Chaining the Shovel Operator
Có thể sử dụng <<
nhiều lần.
a = []
a << 1 << 2 << 3
# a = [1, 2, 3]
9. Flip-Flop
Tôi nghĩ tính năng này khá lạ so với hầu hết mọi người, và tôi khuyên bạn nên tránh sử dụng nó vì nó có thể dễ gây nhầm lẫn. Nhưng nó rất có ích trong trường hợp bạn phải đọc hiểu code người khác.
(1..20).each do |i|
puts i if (i == 3)..(i == 15)
end
Đoạn code trên sẽ in ra tất cả các số từ 3 đến 15
10. Redo Keyword
Một từ khác mà bạn hiếm khi thấy đó là redo
.
10.times do |n|
puts n
redo
end
Đoạn code trên sẽ dẫn tới là lặp vô hạn nếu chúng ta không sư dụng break
or next
.
All rights reserved