[swift-evolution] Will these two features be included in Swift 3?
Davide De Franceschi
defrenz98 at hotmail.com
Mon Dec 7 07:17:57 CST 2015
So, I got now that I was confused.
When I saw this:
https://github.com/apple/example-package-fisheryates/blob/master/Sources/Fisher-Yates_Shuffle.swift#L26 <https://github.com/apple/example-package-fisheryates/blob/master/Sources/Fisher-Yates_Shuffle.swift#L26>
I was surprised as I was pretty sure you couldn't do that. But it works in 2.1 as well.
But it's extending a protocol, not a type.
but it still means that you can do what you wanted with
extension SequenceType where Generator.Element == Double {
func foo() -> String {
return "hello doubles!"
}
}
(of course there are cases where the type is generic but it doesn't adopt a protocol with associated types to extend, so it's still plenty useful)
> On 7 Dec 2015, at 12:56, Krzysztof Siejkowski <krzysztof at siejkowski.net> wrote:
>
> Oh, it could be so, I’m just not aware of it. I’ve tried Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c) with
>
> extension Array where Element == Double {
> func foo() -> String {
> return "hello doubles!"
> }
> }
>
> and got
>
> repl.swift:1:31: error: same-type requirement makes generic parameter 'Element' non-generic
> extension Array where Element == Double {
> ^
>
> Could you please point to docs / example / reference?
>
> All the best,
> Krzysztof
>
>
> On 7 December 2015 at 13:34:51, Davide De Franceschi via swift-evolution (swift-evolution at swift.org <mailto:swift-evolution at swift.org>) wrote:
>
>> I thought constraining an extension to a single type (#1) was already in 2.2?
>> I've seen it in a SPM example and also someone confirmed to me that it compiled
>>
>> It went like
>> extension Array where Element == Double { // add stuff }
>>
>>> On 7 Dec 2015, at 12:14, Krzysztof Siejkowski via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>>
>>> Concerning extension constraining, it’s already doable with:
>>>
>>> ```
>>> protocol DoubleProtocol {}
>>>
>>> extension Double : DoubleProtocol {}
>>>
>>> extension Array where Element : DoubleProtocol {
>>> func onlyForDoubles() -> String {
>>> return "hello doubles!"
>>> }
>>> }
>>>
>>> [1.2].onlyForDoubles() // „hello doubles!”
>>> ["a"].onlyForDoubles() // error: type of expression is ambiguous without more context
>>> ```
>>>
>>> However, I personally like the idea of making a syntactic sugar for that case.
>>>
>>> All the best,
>>> Krzysztof
>>>
>>>
>>> On 7 December 2015 at 13:01:11, Krzysztof Siejkowski (krzysztof at siejkowski.net <mailto:krzysztof at siejkowski.net>) wrote:
>>>
>>>> Concerning generic typealiases, the topic is already being discussed in „Generic `typealias`s” thread: https://lists.swift.org/pipermail/swift-evolution/2015-December/000132.html <https://lists.swift.org/pipermail/swift-evolution/2015-December/000132.html>. The core Swift team approves:
>>>>
>>>> > Yes, this is definitely something that I (at least) would
>>>> like to see. Patches welcome :-)
>>>> > Chris (Lattner)
>>>>
>>>> All the best,
>>>> Krzysztof
>>>>
>>>> On 7 December 2015 at 12:41:05, Tuur Anton via swift-evolution (swift-evolution at swift.org <mailto:swift-evolution at swift.org>) wrote:
>>>>
>>>>> Can you please add these features in Swift 3?
>>>>>
>>>>> 1. The ability to do this:
>>>>> extension Array<Double> {
>>>>> //extend arrays of doubles
>>>>> }
>>>>>
>>>>> 2. Generic typealiases:
>>>>> struct Foo<T,V> {
>>>>> let t: T
>>>>> let v: V
>>>>> }
>>>>> typealias IntFoo<V> = Foo<Int,V> //Error in Swift 2.1
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151207/74849829/attachment.html>
More information about the swift-evolution
mailing list