首页 > 解决方案 > Swift 三箭头符号

问题描述

我在swift 4.0 源代码中看到带有 '>>>-' 符号,我在文档中搜索了这个符号的引用,但我找不到它,Xcode 抛出错误Use of unresolved operator '>>>-'

有人能解释一下这个符号是什么意思吗?为什么?

谢谢

标签: swift

解决方案


Swift 不提供该运算符。它是该库的作者定义的自定义运算符。

您可以在另一个文件中找到定义:

precedencegroup constOp {
    associativity: left
    higherThan: AssignmentPrecedence
}

infix operator >>>-: constOp

@discardableResult
func >>>- <T: UIView>(left: (T, T), block: (inout ConstraintInfo) -> Void) -> NSLayoutConstraint {
    var info = ConstraintInfo()
    block(&info)
    info.secondAttribute = info.secondAttribute == .notAnAttribute ? info.attribute : info.secondAttribute

    let constraint = NSLayoutConstraint(item: left.1,
                                        attribute: info.attribute,
                                        relatedBy: info.relation,
                                        toItem: left.0,
                                        attribute: info.secondAttribute,
                                        multiplier: 1,
                                        constant: info.constant)
    constraint.identifier = info.identifier
    left.0.addConstraint(constraint)
    return constraint
}

而且由于该函数func >>>- <T: UIView>(left: (T, T), block: (inout ConstraintInfo) -> Void) -> NSLayoutConstraint未声明为 public,因此您不能在其声明模块之外使用它。


推荐阅读