Что означает левая угловая скобка и дефис в swift? - PullRequest
0 голосов
/ 08 февраля 2019

Я новичок в Swift и впервые вижу использование стрелки назад с дефисом в Swift.Я могу предположить, что это присваивает значение в следующем коде, но почему он не может просто использовать знак равенства =?Когда мы хотим использовать эту левую угловую скобку <- вместо знака =?Любой другой вариант использования для <-?Вот код, который использует это <- из <a href="https://github.com/tristanhimmelman/ObjectMapper" rel="nofollow noreferrer">https://github.com/tristanhimmelman/ObjectMapper.Библиотека заявляет ObjectMapper использует оператор <-, чтобы определить, как каждая переменная-член отображается в JSON и из него. </strong>, означает ли это, что этот оператор изобретен этой библиотекой и применим только в этой библиотеке?

struct Temperature: Mappable {
    var celsius: Double?
    var fahrenheit: Double?

    init?(map: Map) {

    }

    mutating func mapping(map: Map) {
        celsius     <- map["celsius"]
        fahrenheit  <- map["fahrenheit"]
    }
}

1 Ответ

0 голосов
/ 08 февраля 2019

Да, он определен в ObjectMapper, в IntegerOperators.swift и, возможно, в других местах, которые я не проверял.

https://github.com/tristanhimmelman/ObjectMapper/blob/master/Sources/IntegerOperators.swift

В этом модуле есть несколько определений операторов дляразличные комбинации типов аргументов.Пример:

public func <- <T: UnsignedInteger>(left: inout T, right: Map) {
    switch right.mappingType {
    case .fromJSON where right.isKeyPresent:
        let value: T = toUnsignedInteger(right.currentValue) ?? 0
        FromJSON.basicType(&left, object: value)
    case .toJSON:
        left >>> right
    default: ()
    }
}
...