[swift-evolution] Be able to initialise empty dict with array constrcutor

James Campbell james at supmenow.com
Tue Jan 5 13:47:54 CST 2016


Thats a small but huge improvement :)

On Tue, Jan 5, 2016 at 6:58 PM, Chris Lattner <clattner at apple.com> wrote:

> You’re completely right, but we don’t need to change the swift language to
> fix that.  As of 3f19714, which I just pushed, we now emit this error
> message (which includes a fixit hint to insert the colon):
>
> t.swift:2:33: error: use [:] to get an empty dictionary literal
> var distanceCache: [Int: Int] = []
>                                 ^
>                                  :
>
> instead of:
>
> t.swift:2:33: error: contextual type '[Int : Int]' cannot be used with
> array literal
> var distanceCache: [Int: Int] = []
>                                 ^~
>
> That should address the problem, thanks for pointing this out!
>
> -Chris
>
> On Jan 5, 2016, at 4:51 AM, James Campbell via swift-evolution <
> swift-evolution at swift.org> wrote:
>
> The problem for me is that is so counter intuitive I didn't even know you
> could do that.
>
> On Tue, Jan 5, 2016 at 12:50 PM, Jeremy Pereira <
> jeremy.j.pereira at googlemail.com> wrote:
>
>> I don’t understand what the problem is
>>
>> > On 5 Jan 2016, at 12:39, James Campbell via swift-evolution <
>> swift-evolution at swift.org> wrote:
>> >
>> > See this code:
>> > var distanceCache: [Int: Int] = Dictionary<Int, Int>()
>> >
>> > It is very long and tedious to write especially if what I am storing
>> changes.
>> >
>> > I propose we be allowed to do the following:
>> > var distanceCache: [Int: Int] = []
>>
>> You can do
>>
>> var distanceCache: [Int: Int] = [:]
>>
>> Also
>>
>> var distanceCache2 = [Int: Int]()
>>
>>
>> > Perhaps this dictionary syntax is just confusing and it was a bad idea
>> to make it the same as an array. Most languages use "{" so why did swift
>> choose to share "[" with arrays and dictionaries.
>>
>> It’s not the same, you need the colons inside. I imagine that braces were
>> discarded on the grounds that it would confuse the compiler with respect to
>> closures, for example
>>
>> var myClosure = {} // is a variable of type () -> ()
>>
>>
>> >
>> > --
>> >  Wizard
>> > james at supmenow.com
>> > +44 7523 279 698
>> >  _______________________________________________
>> > swift-evolution mailing list
>> > swift-evolution at swift.org
>> > https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>>
>
>
> --
>  Wizard
> james at supmenow.com
> +44 7523 279 698
>  _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
>


-- 
 Wizard
james at supmenow.com
+44 7523 279 698
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160105/f69ec872/attachment.html>


More information about the swift-evolution mailing list