6 thủ thuật hay với Ruby
Bài đăng này đã không được cập nhật trong 4 năm
Trong bài viết này, mình muốn giới thiệu 6 tính năng hay của Ruby có thể bạn chưa biết. Hãy cùng bắt đầu thôi nào
Tip 1: Tạo hash từ 1 mảng giá trị
Bạn có thể tạo ra 1 Hash từ 1 mảng giá trị với Hash[...]
. Ví dụ cụ thể như sau:
Tip 2: Lambda Literal
Dấu -> (Lambda Literal) cho phép bạn tạo 1 lambda một cách dễ dàng.
a = -> { 1 + 1 }
a.call
# => 2
a = -> (v) { v + 1 }
a.call(2)
# => 3
Tip 3: Double star (**)
Double star là 1 mẹo nhỏ giúp code ruby gọn gàng hơn. Hãy xem ví dụ dưới đây:
def my_method(a, *b, **c)
return a, b, c
end
a
là 1 param bình thường, *b
sẽ lấy tất cả param được truyền sau a
và truyền vào 1 mảng, **c
sẽ lấy các giá trị được truyền vào dạng key: value
ở cuổi method.
Cụ thể:
# 1 tham số:
my_method(1)
# => [1, [], {}]
# Nhiều hơn 1 tham số
my_method(1, 2, 3, 4)
# => [1, [2, 3, 4], {}]
# Nhiều hơn 1 tham số + hash-style params
my_method(1, 2, 3, 4, a: 1, b: 2)
# => [1, [2, 3, 4], {:a=>1, :b=>2}]
Tip 4: Double Pipe Equals
Double Pipe Equals là cách tốt để viết code ngắn gọn.
Cách viết:
a ||= b
tương đương với a || a = b
Xét method sau:
def total
@total ||= (1..100000000).to_a.inject(:+)
end
Biến @total sẽ chỉ được tính toán trong lần đầu tiên được gọi, rất phù hợp cho method tính toán.
Tip 5: Tạo 1 mảng chữ cái và số
Bạn có thể tạo ra 1 mảng chữ cái hoặc số chỉ trong 1 nốt nhạc
A - Z
('a'..'z').to_a
# => ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
1 - 10
(1..10).to_a
# => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Tip 6: Tap
Tap là một method hay làm cho code dễ đọc hơn. Xét ví dụ sau:
class User
attr_accessor :a, :b, :c
end
Bây giờ, giả sử bạn muốn khởi tạo User mới và gán một giá trị cho từng thuộc tính của User đó. Bạn có thể làm như sau:
def my_method
o = User.new
o.a = 1
o.b = 2
o.c = 3
o
end
Hoặc là dùng Tap như sau:
def my_method
User.new.tap do |o|
o.a = 1
o.b = 2
o.c = 3
end
end
Hy vọng rằng bài viết này có thể giúp ích cho bạn. Hẹn gặp lại trong các bài viết sắp tới
Tài liệu tham khảo
All rights reserved