Здравствуйте. Возникла необходимость в функции при вызове указывать оператор (&&, || ), чтобы совершать разного рода сравнение. Не знаю как узнать тип унарного оператора, чтобы объявить в функции.
Спасибо.
Тип унарного оператора
Silea
#1
Silea
#3
func comparison(firstInstance: Information, secondInstance: Information) -> Bool {
if firstInstance.name == secondInstance.name || firstInstance.lastName == secondInstance.lastName || firstInstance.birthDay == secondInstance.birthDay || firstInstance.sex == secondInstance.sex
{
При вызове, чтобы указывался оператор, или || или &&
haymob
#6
struct Information {
let name: String
let lastName: String
let birthDay: Date
let sex: Int
}
enum Operator {
case and
case or
}
func comparison(_ op: Operator, first: Information, second: Information) -> Bool {
let params = [
first.name == second.name,
first.lastName == second.lastName,
first.birthDay == second.birthDay,
first.sex == second.sex
]
switch op {
case .and:
for param in params where !param { return false }
return true
case .or:
for param in params where param { return true }
return false
}
}
let info1 = Information(name: "A", lastName: "B", birthDay: Date(), sex: 1)
let info2 = Information(name: "A", lastName: "C", birthDay: Date(), sex: 1)
print(comparison(.and, first: info1, second: info2))
print(comparison(.or, first: info1, second: info2))