【问题标题】:Working with <- in Swift在 Swift 中使用 <-
【发布时间】:2016-03-04 17:05:26
【问题描述】:

我在看ObjectMapper 库。并注意到&lt;- 运算符。

这究竟是如何工作的?

// 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(在这种情况下)响应?

谢谢!

【问题讨论】:

  • 这可能是用户自定义的重载运算符。您必须查看他的作业才能了解其功能
  • 在您链接的 Github 页面上阅读 自定义转换

标签: swift objectmapper


【解决方案1】:

如果你在他的核心库中 look at his 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)
    }
}

您需要了解他的每个重载以了解它们的功能,他有几十个

Operators

【讨论】:

  • 对了!非常感谢。这让我困惑了几天。
  • @PrakashRaman 可以理解...运算符重载在 Swift 中是一个非常棒的功能。
猜你喜欢
  • 2016-05-26
  • 1970-01-01
  • 2017-03-01
  • 2014-10-26
  • 2014-09-10
  • 2015-09-01
  • 2014-09-03
  • 2014-07-24
  • 2014-08-13
相关资源
最近更新 更多