[swift-evolution] Colon vs. equals
Haravikk
swift-evolution at haravikk.me
Sat Feb 6 05:18:40 CST 2016
+1 for changing attributes to using colons, as it would make them read more like a function call (albeit one with slightly different rules).
-1 though for changing dictionary literals; personally I think the colon syntax is a lot clearer, especially when the literal is being assigned, as it means there is only a single, clear assignment.
Regarding assigning new values to a dictionary though, I wonder if we might extend the literal syntax to modifying an existing dictionary? For example, I might do something like:
myDictionary[“foo”: 1, “bar”: 2] // Add/set new values for foo and bar
As this could be a neater way to replace:
myDictionary[“foo”] = 1
myDictionary[“bar”] = 2
Essentially we’d have a subscript for setting a single value, and one for setting a dictionary, without the need to do:
myDictionary[[“foo”: 1, “bar”: 2]]
Since the second braces should be redundant I think. This would allow developers to avoid the use of assignments with dictionaries if they wish.
> On 6 Feb 2016, at 01:22, Maximilian Hünenberger via swift-evolution <swift-evolution at swift.org> wrote:
>
> Inline
>
> Am 06.02.2016 um 02:07 schrieb Brent Royal-Gordon <brent at architechies.com>:
>
>>> If ":" should be replaced by "=" than only at the call site to make it more consistent with variable declaration and initialization:
>>>
>>> myFunc(number = 4, string = 7)
>>>
>>> func myFunc(number: Int, string: String) {}
>>>
>>> Although writing "=" instead of ":" in methods in 1.5 years Swift and over 20 years Objective-C would be a huge change.
>>
>> To be clear, I like colon in parameter lists; I don't see passing a parameter as setting something.
>>
>
> I cannot say whether I like ":" in parameter lists or if I'm just used to them...
>
> Though setting parameters doesn't seem wrong to me. In fact value types get copied to a new parameter which is declared in the function signature.
>
>> I suppose mainly what I'd like is for attributes to change:
>>
>> @available(iOS, introduced: 7.0, deprecated: 8.0)
>>
>> And *possibly* for dictionary literals to change:
>>
>> let dict = ["key" = "value"] // Also, the shorthand syntax would be [String = String]
>>
>> Although dictionary literals seem like a relatively high-impact change compared to its value.
>
> Yeah that would be true and also ":" in dictionaries reads to me like a "map this value to another one". So it would rather be "=>" than "=" which reads like an assignment to the left "<=".
>
> - Maximilian
>
>>
>> --
>> Brent Royal-Gordon
>> Architechies
>>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list