Инициализатор события <U>Swift Generics недоступен из-за «внутреннего» уровня защиты - PullRequest
1 голос
/ 24 февраля 2020

Я пытаюсь сделать событие и интервал обобщенным c, но сталкиваюсь с этой ошибкой с помощью метода init. Есть идеи, что я делаю не так?

protocol Interval {
        associatedtype T: Comparable
        var start: T { get }
        var end: T { get }
        var max: T { get set } }

    public class Event <U: Comparable> : Interval {
        typealias T = U

        private (set) var start: T
        private (set) var end: T
        var max: T

        var left: Event<T>?
        var right: Event<T>?

        init(start: T, end: T) {

            precondition(start <= end)

            self.start = start
            self.end = end
            self.max = end
        }
    }

var tree = IntervalTree<Int>()
tree.insert(Event<Int>(start: 5, end: 10)) <- 'Event<U>' initializer is inaccessible due to 'internal' protection level

1 Ответ

2 голосов
/ 24 февраля 2020

Уровень доступа по умолчанию - internal, что означает, что он доступен только в текущем модуле. Я подозреваю, что вы получаете доступ к этому коду из другого модуля.

Ваш init использует уровень доступа по умолчанию:

init(start: T, end: T) {

Чтобы решить эту проблему, сделайте его общедоступным c:

public init(start: T, end: T) {
...