[swift-evolution] [proposal] Allow function argument type to be omitted when passing a default value from which it can be inferred

Vladimir.S svabox at gmail.com
Wed May 11 07:49:27 CDT 2016


Inline

On 11.05.2016 15:09, Thorsten Seitz via swift-evolution wrote:
> Am 11. Mai 2016 um 05:33 schrieb Chris Lattner via swift-evolution
> <swift-evolution at swift.org>:
>
>> On May 10, 2016, at 3:02 AM, Sam Dods via swift-evolution
>> <swift-evolution at swift.org> wrote:
>>> I propose that function argument types could be omitted in the same way
>>> as variable and property argument types are omitted when they are set at
>>> point of definition.
>>> [...]
>>
>> We have a pretty strict rule here: types are allowed to be inferred in
>> implementations, but not interfaces. This is important for efficient
>> compilation, encourages people to think about their API interfaces, and
>> somewhat reduces the damage when they don’t.
>
> +1

Sorry, but this("We have a pretty strict rule") seems just like not true. 
The rule is broken as you can see (so not such a 'strict') :

public class A {
   public var a = guessWhatTypeOfThisProperty()
}
// guessWhatTypeOfThisProperty is a global function defined far-far away

So, can't see any reason why Swift should not infer type of default 
parameter *currently*. This will not break any 'strict' rule.

Or, what I'll probably prefer, we should *actually* disallow type inference 
in interface part of type *if* assigned not simple 'raw' value like 
Int/Double/String..

I.e.
public var a = 10 // OK, all is clear here
public var a = "sdfsdf" // OK
public var a = someFunction() // not OK - add type of `a` explicitly

And in this case, yes, there is no place for type inference for default 
parameters.

>
> -Thorsten
>
>
> _______________________________________________
> 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