Phương thức Ruby là gì?
Phương thức là một hoặc nhiều dòng mã Ruby được nhóm lại với nhau cho một mục đích cụ thể.
Mã được nhóm này được đặt tên để bạn có thể sử dụng nó bất cứ khi nào bạn muốn mà không cần phải viết hoặc sao chép và dán lại mã.
Mục đích của một phương pháp có thể là :
- NHẬN thông tin.
- THAY ĐỔI hoặc TẠO đối tượng.
- Dữ liệu LỌC &ĐỊNH DẠNG.
Ví dụ 1 :
Kích thước size
trên một Array
đối tượng cung cấp cho bạn số lượng phần tử (lấy thông tin).
Ví dụ 2 :
pop
phương thức xóa phần tử cuối cùng khỏi mảng (thay đổi đối tượng).
Khi bạn hiểu mối quan hệ giữa các đối tượng, lớp và phương thức, mọi thứ bắt đầu có ý nghĩa.
Hãy tiếp tục học hỏi!
Cách xác định phương thức
Ngôn ngữ lập trình Ruby có nhiều phương thức tích hợp mạnh mẽ mà bạn có thể sử dụng, nhưng bạn cũng có thể tạo riêng .
Làm thế nào?
Bạn có thể xác định phương thức phiên bản của riêng mình bằng cách sử dụng def
từ khóa.
Đây là cú pháp :
def gimme_bacon puts "Bacon plz." end
Chuyện gì đang xảy ra ở đây?
-
def
là một phần trong cú pháp của Ruby, nó nói rằng chúng ta muốndef
không có một phương pháp -
gimme_bacon
là tên của phương thức -
puts "Bacon plz."
là phần thân của phương thức -
end
đánh dấu phần cuối của định nghĩa phương thức
Việc xác định một phương thức chỉ cho Ruby biết rằng bạn muốn tạo nó.
Nếu bạn muốn sử dụng nó thì bạn cần gọi phương thức.
Cách gọi các phương thức trong Ruby
Trong Ruby, khi chúng ta sử dụng một phương thức, chúng ta nói rằng chúng ta đang gọi nó.
Bạn sẽ thường nghe thấy “cuộc gọi phương pháp” hoặc nếu bạn đang làm việc với một người theo chủ nghĩa thuần túy Hướng đối tượng, bạn có thể nghe thấy rằng “bạn đang gửi một tin nhắn”.
Dù bằng cách nào…
Hãy xem một ví dụ về việc sử dụng một phương pháp.
Thông tin cho bạn đây :
gimme_bacon
Bản in này :
"Bacon plz."
Bạn có thể gọi các phương thức trên các đối tượng.
Ví dụ :
n = [1,2,3] n.size # 3
n.size
này đang gọi phương thức size
trên đối tượng n
, tình cờ là một Array
.
Kết quả?
Chúng tôi nhận được kích thước của mảng.
Có những phương pháp nào?
Điều đó phụ thuộc vào lớp của đối tượng mà bạn đang gọi phương thức.
Một mảng sẽ có các phương thức khác với hàm băm .
Bạn có thể kiểm tra tài liệu Ruby để tìm danh sách các phương thức cho một lớp nhất định.
Trả lại giá trị từ các phương thức
Một khái niệm quan trọng trong Ruby là TẤT CẢ các phương thức đều trả về một giá trị.
Hãy để tôi giải thích!
Kết quả của việc gọi một phương thức, bạn sẽ nhận lại được thứ gì đó.
“Thứ gì đó” mà bạn nhận được đến từ biểu thức cuối cùng trong định nghĩa phương thức của bạn.
Đây là ý của tôi :
def number_one 1 end number_one # 1
Một ví dụ khác :
def add(x,y) x + y end add(5, 6) # 11
Chúng tôi gọi đây là "trả lại ngầm", chỉ là một cái tên ưa thích của "tự động trả lại điều cuối cùng".
Ngoài ra :
Bạn có thể yêu cầu Ruby return
một cái gì đó với một từ khóa.
def two return 2 end # 2
Lưu ý rằng phương thức của bạn ngừng chạy khi bạn sử dụng return
.
Bạn sử dụng điều này để trả về sớm mã của mình hoặc để thoát khỏi vòng lặp.
Tại sao lại có dấu hỏi trong tên phương pháp của tôi?
Bạn có thể tìm thấy một số phương thức Ruby lạ.
Với những cái tên như :
-
empty?
-
sort!
-
title=
TẤT CẢ trong số này đều là tên phương thức hợp lệ.
Dấu chấm hỏi, dấu chấm than hoặc dấu bằng có nghĩa là gì?
Chúng là quy ước trong cộng đồng Ruby.
Giải thích :
- Phương pháp dấu chấm hỏi , còn được gọi là phương thức vị từ, được cho là trả về
true
hoặcfalse
- Phương thức dấu chấm than nói rằng nó sẽ làm điều gì đó khác với phiên bản không có dấu chấm than. Thông thường, điều này có liên quan đến việc thay đổi bản thân đối tượng theo một cách nào đó, chẳng hạn như thêm / xóa các phần tử. Còn được gọi là “phương pháp bang”.
- Phương thức dấu bằng có nghĩa là phép gán . Nó được sử dụng để gán một giá trị cho một biến phiên bản
Không có quy ước nào trong số này được thực thi bởi ngôn ngữ.
Nhưng…
Nếu bạn làm theo họ, bạn sẽ có thể viết nhiều mã giống Ruby hơn!
Tóm tắt
Bạn đã học về sức mạnh của các phương thức Ruby, cách xác định chúng, sử dụng chúng và cách tuân theo các quy ước phù hợp.
Bây giờ đến lượt bạn áp dụng điều này vào thực tế 🙂
Cảm ơn vì đã đọc!