> On Jun 12, 2016, at 11:27 PM, Charlie Monroe via swift-evolution 
> <[email protected]> wrote:
> 
>> 
>> On Jun 11, 2016, at 3:35 PM, Adrian Zubarev via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> I just installed the current Swift 3 snapshot to play around with it (last 
>> from may crashed my Xcode all the time).
>> 
>> I wanted to re-build a small project with (currently implemented) Swift 3 
>> changes. Basically I had to look up on GitHub what the default value for 
>> deinitialize(count:) function was for UnsafeMutablePointer, just because 
>> Xcode and the docs can’t tell me that:
>> 
>> /// De-initialize the `count` `Pointee`s starting at `self`, returning
>> /// their memory to an uninitialized state.
>> ///
>> /// - Precondition: The `Pointee`s at `self..<self + count` are
>> ///   initialized.
>> ///
>> /// - Postcondition: The memory is uninitialized.
>> public func deinitialize(count: Int = default)
>> To cut it short:
>> 
>> Could we make default function parameter values more transparent in Swift 3?
>> Why are default parameter values translated to default rather than the 
>> actual value?
> I guess that in some cases you don't want the default value to be known, or 
> is irrelevant. Most importantly, it can be a more complex expression - e.g. 
> creating an object and calling something on it:
> 
> private let mySecretNumber = 0x999
> public func deinitialize(count: Int = NSProcessInfo().processorCount + 
> mySecretNumber)
> 
> And that's a pretty example, it can get much nastier. Since mySecretNumber is 
> private, it definitely cannot be exposed.

That was my reaction as well, but this change is already in the pipeline, 
according to Apple’s published plans.

https://github.com/apple/swift/blob/master/docs/LibraryEvolution.rst#default-argument-expressions
 
<https://github.com/apple/swift/blob/master/docs/LibraryEvolution.rst#default-argument-expressions>

Presumably, once this goes through, it will no longer be possible to use a 
secret number as a default value.

Charles

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to