If inference only works in simple cases, I think it would seem like it works 
unpredictability to anyone unfamiliar with the implementation details.

I image the question of "why do I have to declare a type here, but not in this 
case?" coming up.

Declaring types is one of the first things you have to learn anyway. Just 
declaring a function already requires some understanding of types. Properties 
are not much different IMO.

> On 8 Apr 2017, at 08:34, Brent Royal-Gordon via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> On Apr 7, 2017, at 12:21 AM, Daniel Duan via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> The cons for doing this are obvious too: the inference makes the language 
>> feels more friendly and is, undoubtedly, a beloved feature for many. This 
>> would be a source breaking change.
> 
> 
> Beyond just being more friendly, I think it could be considered a teaching 
> issue. A great way to introduce beginners to custom types would be something 
> like:
> 
>       struct Point {
>               var x = 0.0
>               var y = 0.0
>       }
> 
> Or:
> 
>       struct Person {
>               var name = ""
>               var age = 18
>       }
> 
> If you have to explicitly specify types for the properties, that's another 
> thing you need to introduce to people before you can do this.
> 
> On the other hand, a very limited form of inference might be fine here. 
> Imagine if we did a sort of limited, single-pass, top-down inference which 
> only understood a few things (literals, tuple syntax, initializer calls), 
> stopped once it had seen enough to infer a complete type, and rejected an 
> expression if it encountered something it didn't understand before finishing. 
> That would probably cover most simple cases, and it would probably only allow 
> expressions whose types were obvious enough that we could use it for 
> arguments, too. (But of course it would mean more code in the compiler, so it 
> might not be worth it.)
> 
> -- 
> Brent Royal-Gordon
> Architechies
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to