Тип унарного оператора


#1

Здравствуйте. Возникла необходимость в функции при вызове указывать оператор (&&, || ), чтобы совершать разного рода сравнение. Не знаю как узнать тип унарного оператора, чтобы объявить в функции.
Спасибо.


#2

Покажите пример функции, как должна выглядеть.


#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
{

При вызове, чтобы указывался оператор, или || или &&


#4

А значения для сравнения откуда вы собираетесь брать?


#5

Одни значения берутся из textField, а другие из сохраненного файла.


#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))