Skip to content

Dashboard

[Swift tricks] Preserving Initializers

Created by Admin

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à firstlast.

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.

Source: https://viblo.asia/p/swift-tricks-preserving-initializers-07LKXo9k5V4