#swift
#swift
Вопрос:
У меня есть перечисление, подобное этому:
enum ValidationMatchingStrategy {
case contains(pattern: String, error: String? = nil)
case doesNotContain(pattern: String, error: String? = nil)
case matches(pattern: String, error: String? = nil)
case doesNotMatch(pattern: String, error: String? = nil)
}
В зависимости от случая я по-разному оцениваю связанные значения для выражений регулярных выражений. Однако каждый случай имеет один и тот же тип аргумента для каждого и не выглядит хорошо написанным. Есть ли лучший подход для создания этого перечисления?
Комментарии:
1. Почему
ValidationMatchingStrategy
с ним связана ошибка?2. Своеобразный? Или идиоматический?
Ответ №1:
Возможно, перечисление не должно иметь связанных значений,
enum ValidationMatchingStrategy {
case contains
case doesNotContain
case matches
case doesNotMatch
}
И вы должны создать другой тип и использовать композицию для объединения a ValidationMatchingStrategy
, шаблона и ошибки:
struct ValidationStrategy {
let matchingStrategy: ValidationMatchingStrategy
let pattern: String
let error: String?
}