[Swift tricks] Preserving Initializers
Bài đăng này đã không được cập nhật trong 3 năm
Làm thế nào để tạo custom initializer và vẫn giữ được default initializer của structure?
Trong bài viết này, chúng ta cùng sẽ dùng 1 struct Person để làm ví dụ. Struct này có 2 constant property là first và last.
Swift sẽ tự động tạo cho chúng ta một default initializer, init(first:last:), và tất nhiên chúng ta có thể sử dụng initializer này để tạo 1 instance của struct Person:
Nhưng trong thực tế sẽ có lúc initializer được tạo tự động này không đủ để đáp ứng nhu cầu. Trong trường hợp đó chúng ta có thể tạo 1 custom initializer:
Tuy nhiên, nếu chúng ta tạo 1 custom initializer, thì default initializer sẽ không còn dùng được nữa:
Giả sử trong một số hoàn cảnh nhất định, việc sử dụng default initializer sẽ tiện hơn cho việc tạo ra 1 instance của struct Person, sẽ thật tốt nếu chúng ta có thể sử dụng cả 2 initializer trên cho struct Person đúng không.
Rất may, Swift cung cấp cho chúng ta một cách để đạt được điều này. Chúng ta chỉ cần tạo 1 extension cho struct Person, và đặt custom initializer của chúng ta vào đó.
Lúc này cả 2 initializer đều có thể được sử dụng để tạo instance của struct Person rồi.
Hi vọng bài viết của mình đã giúp các bạn có thêm 1 công cụ hữu ích khi code Swift.
All rights reserved