1
Я конвертирую некоторый код библиотеки в свое приложение, и я не могу понять, как преобразовать этот файл из Swift 2.3 в Swift 3Преобразование файла в Swift 3: невозможно определить тип закрытия в текущем контексте
import UIKit
struct Constraint{
var identifier: String?
var attribute: NSLayoutAttribute = .centerX
var secondAttribute: NSLayoutAttribute = .notAnAttribute
var constant: CGFloat = 0
var multiplier: CGFloat = 1
var relation: NSLayoutRelation = .equal
}
func attributes(attrs:NSLayoutAttribute...) -> [NSLayoutAttribute]{
return attrs
}
infix operator >>- : MultiplicationPrecedence
func >>- <T: UIView> (lhs: (T,T), apply: (inout Constraint) ->()) -> NSLayoutConstraint {
var const = Constraint()
apply(&const)
const.secondAttribute = .notAnAttribute == const.secondAttribute ? const.attribute : const.secondAttribute
let constraint = NSLayoutConstraint(item: lhs.0,
attribute: const.attribute,
relatedBy: const.relation,
toItem: lhs.1,
attribute: const.secondAttribute,
multiplier: const.multiplier,
constant: const.constant)
constraint.identifier = const.identifier
NSLayoutConstraint.activate([constraint])
return constraint
}
func >>- <T: UIView> (lhs: T, apply: (inout Constraint) ->()) -> NSLayoutConstraint {
var const = Constraint()
apply(&const)
let constraint = NSLayoutConstraint(item: lhs,
attribute: const.attribute,
relatedBy: const.relation,
toItem: nil,
attribute: const.attribute,
multiplier: const.multiplier,
constant: const.constant)
constraint.identifier = const.identifier
NSLayoutConstraint.activate([constraint])
return constraint
}
func >>- <T:UIView> (lhs: (T,T),attributes: [NSLayoutAttribute]){
for attribute in attributes{
lhs >>- {
$0.attribute = attribute
}
}
}
func >>- <T:UIView> (lhs: T, attributes: [NSLayoutAttribute]){
for attribute in attributes{
lhs >>- {
$0.attribute = attribute
}
}
}
Ошибка в двух последних функциях.
lhs >>- {
$0.attribute = attribute
}
Вот где говорится «не в состоянии вывести тип закрытия в текущем контексте»