Phương thức khởi tạo là một phần của quá trình tạo đối tượng trong Ruby và nó cho phép bạn thiết lập các giá trị ban đầu cho một đối tượng.
Trong các ngôn ngữ lập trình khác, họ gọi đây là "hàm tạo".
Ví dụ :
Giả sử bạn có Point
lớp, điểm này cần hai tọa độ, x
&y
.
Bạn sẽ chuyển những giá trị này vào đối tượng như thế nào?
Như thế này :
Point.new(10, 20)
new
phương thức là cách bạn tạo các đối tượng mới trong Ruby từ một lớp như Point
hoặc bất kỳ lớp nào khác mà bạn có quyền truy cập.
Mối quan hệ giữa Tạo mới và Khởi tạo
Lưu ý hai đối số này, 10
&20
?
Đây là lúc chúng ta quay lại initialize
phương pháp.
Nếu bạn cố gắng chuyển các đối số vào new
&nếu bạn không xác định initialize
bạn sẽ gặp lỗi:
ArgumentError: wrong number of arguments (2 for 0)
Vì khi bạn gọi new
, Ruby gọi initialize
!
Bạn cần cái này :
class Point def initialize(x, y) end end
Bây giờ bạn có thể tạo Point
đối tượng có hai đối số.
Vì vậy, toàn bộ điểm của initialize
là cho phép bạn tạo các đối tượng có đối số.
Lưu lập luận
Các đối số được chuyển vào initialize
không được lưu tự động ở bất kỳ đâu.
Bạn phải thực hiện việc này bằng cách sử dụng các biến phiên bản:
class Point def initialize(x, y) @x = x @y = y end end
Thao tác này sẽ gán các giá trị của x
&y
tới các biến phiên bản (@x
&@y
) để bạn có thể truy cập chúng sau này.
Một số điểm cần lưu ý về initialize
:
- Bạn có thể xác định các đối số tùy chọn và mặc định
- Sử dụng
return
bên trong phương thức này không có ý nghĩa vì nó đặc biệt và nó LUÔN LUÔN trả về một đối tượng mới - Định nghĩa
initialize
KHÔNG cần thiết nếu lớp của bạn không yêu cầu đối số
Bạn có thể gọi các phương thức khác bên trong initialize
, nhưng bạn không muốn làm bất kỳ công việc thực sự nào ở đây ngoài những gì cần thiết để chuẩn bị cho đối tượng được sử dụng.
Ví dụ :
Nếu lớp học của bạn chỉ làm việc với Github API, bạn sẽ không muốn tải trước tất cả các yêu cầu có thể có cho API.
Bạn chỉ muốn lưu khóa API vào một biến phiên bản.
Hoặc bất kỳ dữ liệu nào mà lớp của bạn cần.
Khởi tạo hàm băm &các đối tượng tích hợp khác
Các đối tượng tích hợp sẵn như hàm băm có những cách đặc biệt để khởi tạo và tạo chúng bên cạnh việc gọi new
.
Các cách tạo hàm băm :
h = Hash.new h = Hash['a', 1] h = {}
Các cách tạo chuỗi :
s = String.new s = "" s = %Q()
Các cách tạo mảng :
a = Array.new(5) a = %w(a b c) a = []
%w
tạo một mảng các chuỗi.
Tóm tắt
Bạn đã tìm hiểu về phương thức khởi tạo Ruby, cách nó liên quan đến new
và những kiến thức cơ bản về tạo đối tượng trong Ruby.
Hãy tiếp tục học bằng cách đọc phần giới thiệu này về Lập trình hướng đối tượng trong Ruby.
Cảm ơn vì đã đọc!