[swift-evolution] [Review] SE-0084: Allow trailing commas in parameter lists and tuples
Patrick Smith
pgwsmith at gmail.com
Fri May 13 01:31:03 CDT 2016
I forgot to add I like this style particularly as it matches how the type is declared (below). There’s a symmetry between them all. Obviously each var in a struct doesn’t need a comma between it, so it would be nice to not have to type them in the other cases too!
public struct ImageGraphic : GraphicType {
var imageSource: ImageSource
var width: Dimension?
var height: Dimension?
}
> On 13 May 2016, at 4:22 PM, Vladimir.S <svabox at gmail.com> wrote:
>
> It seems like all problems could be solved by allowing line-break instead of comma in list:
>
> public init(source: JSONObjectDecoder) throws {
> try self.init(
> imageSource: source.decode("imageSource")
> width: source.decodeOptional("width")
> height: source.decodeOptional("height")
> )
> }
>
> public func toJSON() -> JSON {
> return .ObjectValue([
> "imageSource": imageSource.toJSON()
> "width": width.toJSON()
> "height": height.toJSON()
> ])
> }
>
> Shouldn't we move in that direction? Probably in addition to allow trailing comma just to allow one to use his/her preferable formatting
>
> On 13.05.2016 9:07, Patrick Smith via swift-evolution wrote:
>> I do it quite a lot, especially for initialising structs, enums. I use it to get the same benefits as a switch statement spread over several lines.
>>
>> I think it’s often good to liberally apply new lines, as it aids legibility.
>>
>> Here some sample code of mine using it:
>>
>> extension ImageGraphic : JSONObjectRepresentable {
>> public init(source: JSONObjectDecoder) throws {
>> try self.init(
>> imageSource: source.decode("imageSource"),
>> width: source.decodeOptional("width"),
>> height: source.decodeOptional("height")
>> )
>> }
>>
>> public func toJSON() -> JSON {
>> return .ObjectValue([
>> "imageSource": imageSource.toJSON(),
>> "width": width.toJSON(),
>> "height": height.toJSON()
>> ])
>> }
>> }
>>
>>
>>> On 13 May 2016, at 3:01 PM, Chris Lattner via swift-evolution <swift-evolution at swift.org> wrote:
>>>
>>> On May 12, 2016, at 4:50 PM, Joe Groff <jgroff at apple.com> wrote:
>>>>>> --- a.swift
>>>>>> +++ a.swift
>>>>>> foo(
>>>>>> x: 0,
>>>>>> - y: 1
>>>>>> + y: 1,
>>>>>> + z: 2
>>>>>> )
>>>>>>
>>>>>> Trailing commas avoid this:
>>>>>>
>>>>>> --- a.swift
>>>>>> +++ a.swift
>>>>>> foo(
>>>>>> x: 0,
>>>>>> y: 1,
>>>>>> + z: 2,
>>>>>> )
>>>>>
>>>>> You’re arguing that you want to read Swift code written like this?
>>>>
>>>> I wouldn't mind it.
>>>
>>> I personally find that style repulsive :-) and I haven’t seen swift code commonly doing it. I’m not sure that we want to encourage it either.
>>>
>>>> The standard library already uses this style for function parameters, modulo the trailing comma, and I certainly prefer it to:
>>>>
>>>>> --- a.swift
>>>>> +++ a.swift
>>>>> foo( x: 0
>>>>> , y: 1
>>>>> + , z: 2
>>>>> )
>>>
>>> I agree that this is even worse, but I also haven’t seen this used in Swift code. Have you? Swift’s strictness with argument labels makes any of this pretty unappealing to use.
>>>
>>> If we were really concerned about this, a narrower way to solve the same problem would be to allow a comma before the ), but *only* when there is a newline between them. I still don’t see why we’d want to encourage this though.
>>>
>>> -Chris
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>> _______________________________________________
>> 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