Xcode 7から8にプロジェクトを更新する過程で、問題が発生しています。Swift 3一般的な中断演算子エラー
UIView
の制約を処理する汎用のinfix
演算子があります。ここで
は、オペレータの定義です:私が持っている
for attribute: NSLayoutAttribute in [.left, .right, .top, .bottom] {
(view, self) >>>- {
$0.attribute = attribute
}
}
:
precedencegroup constPrecedence {
associativity: left
higherThan: AssignmentPrecedence
}
infix operator >>>- : constPrecedence
@discardableResult
func >>>- <T: UIView> (left: (T, T), block: (inout ConstraintInfo) ->()) -> 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
}
今、演算子を使用すると、私は理解していないエラーを取得していますジェネリックでない関数でもテストされていますが、ブロックの型についてはまだ不満があります。
P .:私はコードの元の著者ではなく、私はPRのコードを更新しようとしており、構文を変更するとコードに多大な影響を与えます。
あなたは[mcve]を投稿できますか – Hamish
これはあまりコードではないので、どこでも簡単に確認できます。私は十分な証拠を提供したと思った。他に何か要りますか? –
私はXcode 8 beta 6でこれを再現しようとしました。(これは、あなたが参照しているGitHubプロジェクトです(これは(https://github.com/Ramotion/paper-onboarding)ですか?コンパイルの例については、[this gist](https://gist.github.com/hamishknight/e44bd25823d24dea068e0498fa1cef4b)を参照してください。おそらく、あなたのビルドフォルダをクリーニングしようとしますか? – Hamish