2

私はObjectMapperライブラリを見ていました。そして、<-オペレーターに気づきました。

これはどのように正確に機能しますか?

// Mappable
func mapping(map: Map) {
    username    <- map["username"]
    age         <- map["age"]
    weight      <- map["weight"]
    array       <- map["arr"]
    dictionary  <- map["dict"]
    bestFriend  <- map["best_friend"]
    friends     <- map["friends"]
    birthday    <- (map["birthday"], DateTransform())
}

また、次の行はどのように機能しますか

birthday    <- (map["birthday"], DateTransform())

birthdayそれが今タプルであることを理解しています。どちらでアクセスできますか

self.birthday.0
self.birthday.1

プロパティはそのように定義されていますが

var birthday: NSDate?

NSDateタプルは(この場合)としてどのように応答しますか?

ありがとう!

4

1 に答える 1

5

彼のコア ライブラリにあるOperators.Swiftファイルを見ると、彼のカスタム オペレータのオーバーロードがすべて見つかります。

彼はカスタム オペレータを次のように定義します。

infix operator <- {}

それから彼は彼のオペレーターのためにかなりの数のオーバーロードを持っています.これは彼のリストからの最初のオーバーロードです:

/// Object of Basic type
public func <- <T>(inout left: T, right: Map) {
    switch right.mappingType {
    case .FromJSON:
        FromJSON.basicType(&left, object: right.value())
    case .ToJSON:
        ToJSON.basicType(left, map: right)
    }
}

彼のオーバーロードがどのように機能するかを理解するには、それぞれのオーバーロードを確認する必要があります。彼は何十ものオーバーロードを持っています。

オペレーター

于 2016-03-04T17:19:10.777 に答える