Что такое OptionSet в Swift? - PullRequest
0 голосов
/ 07 апреля 2019

Я пытался найти directions из UIPanGestureRecognizer
и у меня есть одно расширение, где один struct использует OptionSet вот так:

extension UIPanGestureRecognizer {
    public struct PanGestureDirection: OptionSet {
        public let rawValue: UInt8

        public init(rawValue: UInt8) {
            self.rawValue = rawValue
        }

        static let Up = PanGestureDirection(rawValue: 1 << 0)
        static let Down = PanGestureDirection(rawValue: 1 << 1)
        static let Left = PanGestureDirection(rawValue: 1 << 2)
        static let Right = PanGestureDirection(rawValue: 1 << 3)
    }

    private func getDirectionBy(velocity: CGFloat, greater: PanGestureDirection, lower: PanGestureDirection) -> PanGestureDirection {
        if velocity == 0 {
            return []
        }
        return velocity > 0 ? greater : lower
    }

    public func direction(in view: UIView) -> PanGestureDirection {
        let velocity = self.velocity(in: view)
        let yDirection = getDirectionBy(velocity: velocity.y, greater: PanGestureDirection.Down, lower: PanGestureDirection.Up)
        let xDirection = getDirectionBy(velocity: velocity.x, greater: PanGestureDirection.Right, lower: PanGestureDirection.Left)
        return xDirection.union(yDirection)
    }
}

Может ли кто-нибудь помочь мне в простых словах с простым примером того, что именно является OptionSet и как мы можем использовать его в будущих задачах?

1 Ответ

2 голосов
/ 07 апреля 2019

Прямо от источника:

"Тип, который представляет интерфейс математического набора для набора битов."

https://developer.apple.com/documentation/swift/optionset

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...