Phương Thức Ruby Là Gì?
Phương thức là một, hoặc nhiều, dòng code Ruby nhóm lại cho mục đích cụ thể. Code nhóm này được đặt tên để dùng khi muốn mà không phải viết lại hoặc copy & paste. Mục đích phương thức có thể:
- GET thông tin.
- THAY ĐỔI hoặc TẠO object.
- LỌC & ĐỊNH DẠNG data.
Ví dụ 1: Phương thức size trên object Array cho count phần tử (get thông tin). Ví dụ 2: Phương thức pop xóa phần tử cuối mảng (thay đổi object). Khi hiểu mối quan hệ object, class & method mọi thứ bắt đầu có nghĩa.
Tiếp tục học!
Cách Định Nghĩa Phương Thức
Ruby có nhiều built-in method mạnh, nhưng bạn cũng tự tạo. Làm sao? Dùng từ khóa def định nghĩa instance method. Cú pháp:
def gimme_bacon puts "Bacon plz." end
Đang xảy ra gì? 1. def là cú pháp Ruby, nói muốn define method 2. gimme_bacon tên method 3. puts "Bacon plz." body method 4. end kết thúc định nghĩa. Định nghĩa method chỉ báo Ruby muốn tạo. Muốn dùng thì gọi method.
Cách Gọi Phương Thức Trong Ruby
Trong Ruby, khi dùng method, nói là gọi nó. Thường nghe "method call", hoặc nếu làm việc với OOP purist, nghe "you're sending a message". Cách nào cũng được... Xem ví dụ dùng method. Đây:
gimme_bacon
In ra: "Bacon plz." Gọi method trên object. Ví dụ: n = [1,2,3]; n.size # 3 n.size gọi method size trên object n, là Array. Kết quả? Nhận size mảng.
Phương Thức Nào Available?
Phụ thuộc class của object bạn gọi method. Array có method khác hash. Check Ruby doc tìm list method cho class cho trước.
Trả Giá Trị Từ Phương Thức
Khái niệm quan trọng Ruby: TẤT CẢ method trả giá trị. Giải thích! Kết quả gọi method, bạn nhận được gì đó. "Cái gì đó" này đến từ biểu thức cuối cùng trong định nghĩa method. Cái tôi nói:
def number_one 1 end number_one # 1
Ví dụ khác:
def add(x,y) x + y end add(5, 6) # 11
Gọi "implicit return", tên fancy cho "tự động trả cái cuối". Thêm vào đó: Bạn bảo Ruby return gì đó với từ khóa.
def two return 2 end # 2Chú ý method dừng chạy khi dùng
return. Dùng cho early return hoặc thoát loop.
Tại Sao Có Dấu Hỏi Trong Tên Phương Thức?
Bạn thấy method Ruby lạ. Tên như: empty?, sort!, title=. TẤT CẢ đều tên method hợp lệ. Dấu hỏi, dấu chấm than, dấu bằng nghĩa gì? Là convention cộng đồng Ruby. Giải thích:
- Method dấu hỏi (predicate method) nên trả
truehoặcfalse - Method dấu chấm than nói nó làm khác version không dấu chấm than. Thường liên quan thay đổi object itself, như add/xóa phần tử. Còn gọi "bang methods".
- Dấu bằng method nghĩa là assignment. Dùng gán giá trị cho instance variable
Không convention nào bị enforce bởi ngôn ngữ. Nhưng... Nếu tuân thủ, bạn viết code Ruby-like hơn!
Tóm Tắt
Bạn đã học sức mạnh phương thức Ruby, cách định nghĩa, dùng & tuân thủ convention đúng. Bây giờ lượt bạn áp dụng 🙂 Cảm ơn bạn đã đọc!