Возможны ли пользовательские синтезированные условные соответствия в Swift? - PullRequest
0 голосов
/ 01 октября 2018

Есть ли способ создать пользовательский протокол в swift и заставить компилятор автоматически синтезировать соответствие , когда все свойства соответствуют пользовательскому протоколу, объявив некоторые правила о том, как объединитьсвойства?

Прямо сейчас стандартные протоколы Codable, Equatable и Hashable используют это поведение, но я не уверен, можем ли мы объявить наши собственные протоколы так, как они ведут себя.

Игрушечный пример:

Я хотел бы проиллюстрировать простым примером, который я пытаюсь реализовать.Я создал протокол с именем Interpolatable

    protocol Interpolatable {

        func interpolate(to endValue: Self, at ratio: CGFloat) -> Self

    }

. Я хотел бы объявить структуру с именем Keyframe: Interpolatable, хранящую только свойства, соответствующие протоколу Interpolatable.

    struct Keyframe: Interpolatable {

        let customValue1: CustomValueType1 //conforms to Interpolatable 
        let customValue2: CustomValueType2 //conforms to Interpolatable 

    }

Теперь я хотел бы иметь возможность где-нибудь еще объявить универсальный способ сообщить компилятору, как заставить подобные типы реализовывать необходимую функцию для соответствия протоколу Interpolatable.

Возможно ли это?Это, конечно, чувствует себя очень Швифти .

...