Lưu ý rằng tôi đã đọc số post nhưng bài đăng đó sử dụng câu lệnh chuyển đổi và nó được cho là làm điều gì đó (trả về true) khi mẫu phù hợp. Tôi, mặt khác, không muốn làm bất cứ điều gì nếu mô hình phù hợp và sử dụng một tuyên bố nếu trường hợp.Làm thế nào để kiểm tra nếu enum không phù hợp với một mô hình?
Tôi có enum này:
enum MyEnum {
case a
case b(Int)
case c
case d
}
Dưới đây là một thể hiện của nó:
let myEnum: MyEnum = .a
Bây giờ tôi muốn làm điều gì đó nếu không phải là myEnum
.b
. Kể từ .b
có giá trị liên quan, tôi không thể chỉ cần sử dụng một nếu kiểm tra tuyên bố:
if myEnum != .b { // compiler error
// do my thing here
}
Vì vậy, tôi phải sử dụng một tuyên bố nếu hợp cụ thể để mô hình phù hợp với nó:
if case .b(_) = myEnum {
} else {
// do my thing here
}
Nhưng tôi thực sự ghét việc sử dụng mệnh đề if rỗng. Điều đó có vẻ không hợp lý với tôi. Tôi đã cố gắng làm điều này một cách ngây thơ:
if case .b(_) != myEnum { // compiler error!
// do my thing here
}
Có cách nào tốt hơn để thực hiện điều này ngoài việc sử dụng mệnh đề if trống không?
Tôi vẫn có mã sẽ chạy bất kể mẫu có khớp hay không, do đó, câu lệnh guard
sẽ không hoạt động.
Xin lỗi, nhưng tôi nhận ra rằng tôi đã không cung cấp đủ ngữ cảnh. Mã của tôi không thể trở lại sau đó. Có một số mã cần được thực hiện cho dù mẫu có khớp hay không. Tuy nhiên, bạn xứng đáng là một upvote! – Sweeper
@Sweeper vâng, nghĩ về điều đó sau khi tôi đăng câu trả lời, vì vậy tôi đã thêm một lưu ý về điều này :) – Cristik
tại sao không sử dụng một hàm hoặc thuộc tính được tính toán trả về trạng thái của enum (switch). – Dasem