{ public func difference<C>( from other: C, by areEquivalent: (Element, C.Element) -> Bool ) -> CollectionDifference<Element> where ... } extension BidirectionalCollection where Element: Equatable { public func difference<C>( from other: C ) -> CollectionDifference<Element> where ... } Ordered Collection Diffing
{ ... } let r: Rectangle = generic() // ݺͼग़͠ଆ͕࣮ଶΛࢦఆ͍ͯ͠Δ let c: Circle = generic() func reverseGeneric() -> some Shape { return Rectangle(...) } let s = reverseGeneric()// function͕࣮ଶΛࢦఆ͍ͯ͠Δ
String let defaultValue: T var wrappedValue: T { get { return UserDefaults.standard.object(forKey: key) as? T ?? defaultValue } set { UserDefaults.standard.set(newValue, forKey: key) } } }