Chào mừng bạn đến với Fx Studio. Chủ đề bài viết lần này sẽ nói về một từ khóa khá phổ biến trong Swift, đó là Guard. Nếu bạn là một iOS developer, thì đã rất quen thuộc với Guard rồi. Và mục đích bài viết này sẽ giúp bạn hệ thống lại khi nào sẽ sử dụng Guard cho hiệu quả. Còn nếu mọi việc đã ổn rồi, thì … Bắt đầu thôi! Chuẩn bịVề mặt kiến thức, bạn chỉ cần biết sơ qua về Swift là ổn rồi. Nhưng nếu bạn chưa biết gì về Swift, thì có thể đọc qua bài viết ở link sau:
Về tools, bạn không cần quá lo lắng. Các Xcode bây giờ đều chạy tốt và có sẵn Guard trong Core rồi. Guard KeywordKhi học về Swift, bạn sẽ bắt gặp kiểu cú pháp này khá là nhiều trong các project. func hello(name: String?) { }Đây chính là ví dụ minh họa đơn giản nhất cho việc sử dụng từ khóa
Khá là hay phải không nào. Chúng ta sẽ tìm hiểu dần dần thông qua các ví dụ ở phần sau nhóe. Else ThrowĐể xóa đi ý niệm tồn tại lâu với
Mục đích chính là bạn sẽ không xử lý lỗi phát sinh tại function đó. Bạn chỉ cần chuyển giao nó về function cao hơn để giải quyết. Tham khảo đoạn code sau nhóe. enum ValidationError: Error { }
func validate(name: String) throws { }Trong ví dụ trên, bạn sẽ nhận ra rằng là chúng ta bắt 2 điều kiện cho cùng một biến enum ValidationError: Error { }
func validate(name: String) throws { }6, mặc dù enum ValidationError: Error { }
func validate(name: String) throws { }6 không phải là Optional. Ưu điểm của cách dùng này là:
Let OptionalĐây là cách phổ biết nhất với Guard trong Swift. Nhiệm vụ chính của nó sẽ là unwrap optionals, cũng khá tương tự với enum ValidationError: Error { }
func validate(name: String) throws { }8. Bạn đã có ví dụ code về cách dùng này ở trên rồi. Ta sẽ xem lại ví dụ với cả 2 cách enum ValidationError: Error { }
func validate(name: String) throws { }8 & // guard let guard let name = name else { }
print("Hello, (name)")
// if let
if let name = name { }0 nhóe. // guard let guard let name = name else { }
print("Hello, (name)")
// if let
if let name = name { }Tùy vào ý nghĩa mà bạn muốn thể hiện, kết quả nhận được sẽ khác nhau. Với:
Multiple ConditionsVới các chương trình lớn, độ phức tạp về mặt logic cũng tăng theo. Nên đôi lúc bạn cần phải sử dụng nhiều điều kiện trong cùng 1 câu lệnh. Và khi bạn không cần quan tâm tới cụ thể từng lỗi do mỗi điều kiện gây ra, thì việc kết hợp chúng lại với nhau là giải pháp hợp lý nhất. Công việc trên cũng khá là quen thuộc với bạn, nhưng khi bạn sử dụng thêm class FormViewController: UIViewController { }Bạn sẽ sử dụng keyword // guard let guard let name = name else { }
print("Hello, (name)")
// if let
if let name = name { }6 để tách biệt các điều kiện với nhau. Trong ví dụ, function // guard let guard let name = name else { }
print("Hello, (name)")
// if let
if let name = name { }7 đã đảm bảo dữ liệu // guard let guard let name = name else { }
print("Hello, (name)")
// if let
if let name = name { }8 khi nó là một Optional. Và cũng đảm bảo với các điều kiện khác của class quy định. Guard AvailableĐôi lúc, function của bạn chỉ hoạt động trên một số version OS cụ thể. Thì bạn vẫn có thể áp dụng cú pháp // guard let guard let name = name else { }
print("Hello, (name)")
// if let
if let name = name { }9, vì bản chất // guard let guard let name = name else { }
print("Hello, (name)")
// if let
if let name = name { }2 mà thôi. Xem ví dụ code nhóe! func showTelephotoCamera() throws { # available(iOS 13, *) else { }Ý nghĩa to lớn nhất của cách dùng này là:
Case EnumĐây là cách ít người sử dụng class FormViewController: UIViewController { }5 của Enum, nhằm kiểm tra nó trong một số điều kiện nhất định. Xem qua ví dụ code tiếp nhóe! enum State { }
var state = State.active
guard case state = State.initial else { }
// Continue executionVới ví dụ trên, nếu class FormViewController: UIViewController { }6 khác với class FormViewController: UIViewController { }7 thì các đoạn code ở dưới sẽ được thực thi. Bạn chỉ cần thực hiện câu lệnh class FormViewController: UIViewController { }8 thay vì phải class FormViewController: UIViewController { }9 nhóe. Cũng khá là tiện lợi phải không nào! Tạm kếtQua bài viết trên, bạn sẽ áp dụng được // guard let guard let name = name else { }
print("Hello, (name)")
// if let
if let name = name { }2 nhóe! Okay! Tới đây, mình xin kết thúc bài viết về Guard keyword trong iOS . Nếu có gì thắc mắc hay góp ý cho mình thì bạn có thể để lại bình luận hoặc gởi email theo trang Contact. |