Проверка идентичности оператора
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
(см. Его основную функцию)?