mẫu tùy chọn Swift cho phép bạn sử dụng trường hợp chúng ta hãy như thế này:Patterns Tùy chọn Swift
var arrayOfOptional: [Int?] = [1, 2, nil, 4]
for case let number? in arrayOfOptional {
print("\(number)")
}
gì confuses me là số let? cú pháp. Trong ràng buộc tùy chọn, phiên bản chưa được mở không có ?, nhưng trong trường hợp cho phép, nó có. Làm thế nào để bạn giải thích cấu trúc này cho nó để làm cho tinh thần cho bạn rằng số đó là unwrapped?
Về mặt chức năng, sự khác biệt giữa hai bên dưới là những gì:
if let x = someOptional {
print(x)
}
so
if case let x? = someOptional {
print(x)
}
'x?' Chỉ là một lối tắt cho '.Some (x)' trong một mẫu (như được ghi trong [Mẫu tùy chọn] (https://developer.apple.com/library/ prerelease/ios/documentation/Swift/Khái niệm/Swift_Programming_Language/Patterns.html # // apple_ref/doc/uid/TP40014097-CH36-ID520)). Là câu hỏi của bạn * tại sao * Apple đã chọn cú pháp cụ thể này? (Tôi nghĩ rằng nó đã được thảo luận trong Diễn đàn Nhà phát triển của Apple cho dù điều này là trực quan hay không.) –
Cú pháp này là đối diện của ràng buộc tùy chọn, mà unwraps mà không có bạn chỉ định ?, Cố gắng tìm cách để giải thích điều này theo cách mà tôi có thể nhớ hành vi dễ dàng hơn. Ngoài ra, cho rằng đây là một phím tắt cho. Một số (x), nếu bạn làm thẳng x mà không có? (ví dụ: nếu trường hợp cho x) - bản đồ đó là gì? – Boon
'nếu trường hợp để x = y {}' là khá vô ích. Nó luôn luôn đúng và gán 'y' cho' x'. Nhưng 'nếu case cho x là SubClass = y {}' là hàm tương đương với 'if let x = y as? SubClass {} '. - Các mẫu tùy chọn tổng quát hơn so với ràng buộc tùy chọn, chúng có thể được sử dụng trong chuyển đổi/if/while/for statements và cú pháp chỉ khác (và có lẽ không trực quan). –