Проверка личности оператора Swift - PullRequest
0 голосов
/ 15 мая 2018

Проверка идентичности оператора

Swift 4.1, Xcode 9.3

Я знаю, что оператор === используется в Swift для проверки идентичности операнда.У меня есть ситуация, в которой я хочу проверить идентичность моего операнда с идентификатором оператора - Мне нужно проверить, равен ли мой operation параметр + или -.


Что я хочу сделать

extension Collection where Element: Numeric {

    func total(by operation: (Element, Element) -> Element) -> Element {
        return (operation === + || operation === -) ? reduce(0, operation) : reduce(1, operation)

        // For '+', '-', you need to use reduce with the initial value of 0
        // For '*', '/', you need to use reduce with the initial value of 1
    }

}

Точка уточнения: Мне интересно, как проверить личность operation, но Свифт видит только оператора как оператора, а не его основную функцию.


Идеальное использование

let arr = [1, 2, 3, 4]

let totalSum = arr.total(by: +) //10
let totalProduct = arr.total(by: *) //24

Последний вопрос

Как проверить подлинность operator (см. Его основную функцию)?


...