Khởi tạo
khởi tạo là quá trình chuẩn bị một thể hiện của một lớp, cơ cấu, hoặc liệt kê để sử dụng. Quá trình này liên quan đến việc thiết lập một giá trị ban đầu cho mỗi tài sản được lưu trữ trên dụ đó và thực hiện bất kỳ thiết lập nào khác hoặc khởi tạo được yêu cầu trước khi các trường hợp mới đã sẵn sàng để sử dụng.
Bạn thực hiện quá trình khởi tạo này bằng initializers định, mà cũng giống như các phương pháp đặc biệt mà có thể gọi là để tạo ra một thể hiện mới của một loại hình cụ thể. Không giống như initializers Objective-C, initializers Swift không trả về một giá trị. Vai trò chính của họ là để đảm bảo rằng các trường hợp mới của một loại được khởi tạo một cách chính xác trước khi chúng được sử dụng lần đầu tiên.
Các ví dụ về các loại lớp cũng có thể thực hiện một deinitializer, thực hiện bất kỳ dọn dẹp tùy chỉnh ngay trước khi một thể hiện của lớp đó được deallocated. Để biết thêm thông tin về deinitializers, xem Deinitialization.
Gán giá trị ban đầu cho tính lưu trữ
Các lớp học và cấu trúc phải thiết lập tất cả các thuộc tính lưu trữ của họ đến một giá trị ban đầu phù hợp khi một thể hiện của lớp hoặc cấu trúc được tạo ra. Thuộc tính được lưu trữ không thể rơi vào trạng thái vô định.
Bạn có thể thiết lập một giá trị ban đầu cho một tài sản được lưu trữ trong một initializer, hoặc bằng cách gán một giá trị bất động sản mặc định như là một phần của định nghĩa của bất động sản. Những hành động này được mô tả trong các phần sau.
Chú ý
Khi bạn gán một giá trị mặc định cho một tài sản được lưu trữ, hoặc thiết lập giá trị ban đầu của nó trong một initializer, giá trị của tài sản đó được thiết lập trực tiếp, mà không gọi bất kỳ quan sát tài sản.
Initializers
Initializers được kêu gọi để tạo ra một thể hiện mới của một loại hình cụ thể. Ở dạng đơn giản nhất, một initializer giống như một phương pháp dụ không có tham số, được viết bằng cách sử dụng từ khóa init:
init () {
// thực hiện một số khởi tạo ở đây
}
Ví dụ dưới đây định nghĩa một cấu trúc mới được gọi là F để lưu trữ nhiệt độ thể hiện trong thang đo Fahrenheit . Cấu trúc Fahrenheit có một tài sản được lưu trữ, nhiệt độ, mà là của Double:
struct Fahrenheit {
var nhiệt độ: Double
init () {
nhiệt độ = 32,0
}
}
var f = F ()
print ( "Nhiệt độ mặc định là (f.temperature ) ° Fahrenheit ")
// in" nhiệt độ mặc định là 32,0 ° Fahrenheit "
cấu trúc định nghĩa một initializer đơn, init, không có tham số, khởi tạo nhiệt độ lưu trữ với giá trị là 32,0 (điểm đóng băng của nước trong độ F) .
Mặc định tài sản Values
Bạn có thể thiết lập các giá trị ban đầu của một tài sản được lưu trữ từ bên trong một initializer, như trình bày ở trên. Ngoài ra, chỉ định một giá trị bất động sản mặc định như là một phần của việc kê khai của tài sản. Bạn chỉ định một giá trị bất động sản mặc định bằng cách gán một giá trị ban đầu đối với tài sản khi nó được định nghĩa.
Chú ý
Nếu một tài sản luôn luôn có giá trị ban đầu như nhau, cung cấp một giá trị mặc định chứ không phải là thiết lập một giá trị trong một initializer. Kết quả cuối cùng là như nhau, nhưng giá trị mặc định quan hệ khởi tạo của tài sản chặt chẽ hơn để khai báo. Nó làm cho ngắn hơn, initializers rõ ràng hơn và cho phép bạn để suy ra các loại tài sản từ giá trị mặc định của nó. Giá trị mặc định cũng làm cho nó dễ dàng hơn cho bạn để tận dụng lợi thế của initializers mặc định và khởi tạo thừa kế, như mô tả sau này trong chương này.
Bạn có thể viết cấu trúc Fahrenheit từ trên cao trong một hình thức đơn giản hơn bằng cách cung cấp một giá trị mặc định cho thuộc nhiệt độ của nó tại điểm rằng tài sản được tuyên bố:
struct Fahrenheit {
var nhiệt độ = 32,0
}
tùy khởi
. Bạn có thể tùy chỉnh các quá trình khởi động cùng với các thông số đầu vào và các loại tài sản tùy chọn, hoặc bằng cách gán thuộc tính liên tục trong quá trình khởi tạo, như được mô tả trong các phần sau
khởi thông số
Bạn có thể cung cấp tham số khởi tạo như là một phần của định nghĩa của một initializer, để xác định các loại và tên của các giá trị tùy chỉnh quá trình khởi tạo. Tham số khởi tạo có khả năng tương tự và cú pháp như chức năng và phương pháp tham số.
Ví dụ sau định nghĩa một cấu trúc được gọi là C, trong đó lưu trữ nhiệt độ thể hiện bằng độ Celsius. Các cấu trúc C thực hiện hai initializers tùy chỉnh được gọi là init (fromFahrenheit :) và init (fromKelvin :), mà khởi tạo một thể hiện mới của cấu trúc với một giá trị từ một thang đo nhiệt độ khác nhau:
đang được dịch, vui lòng đợi..
