swift中的左尖括号和连字符是什么意思?

时间:2019-02-08 16:42:39

标签: swift operator-keyword

我是Swift的新手,第一次看到在Swift中使用后退箭头和连字符。我可以猜测这是在下面的代码中分配一个值,但是为什么不能只使用等号=?我们什么时候要使用左尖括号<-代替=号? <-有其他用例吗?这是使用此<-from https://github.com/tristanhimmelman/ObjectMapper的代码。库中声明 ObjectMapper使用<-运算符定义每个成员变量与JSON的映射方式。,这是否意味着该运算符是由该库发明的,并且仅适用于该库?

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 :(得分:1)

是的,它是在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: ()
    }
}