This is an interesting idea.
Although I didn’t like this at first read - it will remove a lot of generic
init methods from my code that all they do is just fill properties with values.
> Since we know the types of the properties, how about we replace the type in
> the signature with either an indication that the property should be
> automatically set, or better yet, the property which should be set:
>
> class Foo
> {
> let foo : String
> let bar : String
> let barCount : Int
> let baz : Int
>
> init(foo: self.foo, bar: self.bar, baz: self.baz)
> {
> self.barCount = bar.characters.count
> }
> }
>
> That way you don’t always have to have the init’s parameter names match the
> names of the properties they set (even though they often would).We could also
> allow a leading dot as a shorthand for ‘self.’
>
> init(foo: .foo, bar: .bar, baz: .baz)
>
> I think I like explicit ‘self.’ better, but that may just be my preference.In
> either case, the generated interface would show the actual type.
>
> // init(foo: String, bar: String, baz: Int)
>
> Thanks,
> Jon
>
> > This is a common pattern for initialisers at the moment: class Foo { let
> > foo : String let bar : String let barCount : Int let baz : Int init(foo:
> > String, bar: String, baz: Int) { self.foo = foo self.bar = bar self.baz =
> > baz barCount = bar.characters.count } } This involves a lot of using
> > 'self.'. For those who prefer not to use 'self.' explicitly everywhere,
> > this is probably the main place it gets used. It's a lot of boilerplate
> > code. How would it be if, like default variables, we could pack some of
> > that information into the argument tuple, and unify parameters with
> > properties immediately? class Foo { let foo : String let bar : String let
> > barCount : Int let baz : Int init(self.foo: String, self.bar: String,
> > self.baz: Int) { barCount = bar.characters.count } } Less boilerplate, more
> > focus on the properties which need to be generated. Thoughts?
>
>
>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution