Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Làm chủ phương thức Initialize trong Ruby: Hướng dẫn từng bước

Phương thức initialize là một phần của quá trình tạo object trong Ruby & nó cho phép bạn thiết lập giá trị ban đầu cho object.

Trong các ngôn ngữ lập trình khác, họ gọi đây là "constructor" (hàm khởi tạo).

Ví dụ:

Giả sử bạn có class Point, point này cần hai tọa độ, x & y.

Làm thế nào để truyền các giá trị này vào object?

Như sau:

Point.new(10, 20)

Phương thức new là cách bạn tạo object mới trong Ruby từ class như Point, hoặc bất kỳ class nào bạn có quyền truy cập.

Mối quan hệ giữa New & Initialize

Chú ý hai đối số này, 10 & 20?

Đây là nơi chúng ta quay về phương thức initialize.

Nếu bạn thử truyền đối số vào new & nếu bạn không định nghĩa initialize, bạn sẽ nhận được lỗi:

ArgumentError: wrong number of arguments (2 for 0)

Bởi 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 object Point với hai đối số.

Vì vậy toàn bộ điểm của initialize là cho phép bạn tạo object với đối số.

Lưu trữ các đối số (Saving The Arguments)

Đối số truyền vào initialize không được tự động lưu ở đâu.

Bạn phải làm điều này dùng biến instance:

class Point
  def initialize(x, y)
    @x = x
    @y = y
  end
end

Điều này sẽ gán giá trị của x & y cho biến instance (@x & @y) để bạn có thể truy cập sau.

Một vài điểm lưu ý về initialize:

  • Bạn có thể định nghĩa đối số tùy chọn & mặc định
  • Dùng return bên trong phương thức này không có ý nghĩa vì nó đặc biệt & sẽ LUÔN trả về object mới
  • Định nghĩa initialize KHÔNG bắt buộc nếu class 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ị object để sử dụng.

Ví dụ:

Nếu class của bạn toàn về làm việc với Github API, bạn không muốn pre-load tất cả request có thể đến API trước.

Bạn chỉ muốn lưu API key vào biến instance.

Hoặc bất kỳ dữ liệu nào class của bạn cần.

Khởi tạo Hash & Các Built-in Objects khác

Built-in objects như hash có cách đặc biệt để khởi tạo & tạo chúng ngoài việc gọi new.

Cách tạo hash:

h = Hash.new
h = Hash['a', 1]
h = {}

Cách tạo string:

s = String.new
s = ""
s = %Q()

Cách tạo array:

a = Array.new(5)
a = %w(a b c)
a = []

%w tạo mảng các chuỗi.

Tóm tắt

Bạn đã học về phương thức initialize trong Ruby, cách nó liên quan đến phương thức new, và cơ bản về tạo object trong Ruby.

Tiếp tục học bằng cách đọc bài giới thiệu về Lập trình Hướng đối tượng trong Ruby.

Cảm ơn bạn đã đọc!