I don’t know about the chances of getting approved, but I think this is 
something worth discussing. 

It might just be my ignorance, but I can’t think of a good reason why a 
function argument would be force unwrapped. Either it’s non-null and the caller 
is expected to unwrap it or it’s nullable and the method is expected to handle 
the nil value. So I’m positive to that part of the proposal.

As to what we should do with the generated interfaces of Objective-C code that 
hasn’t been annotated with nullability, I think that needs input from more 
people to find the preferred solution. 

Once that’s been discussed some more, I’d be willing to write up a formal 
proposal if you don’t feel like it (assuming the discussion leads somewhere).

- David


> On 27 Jun 2016, at 06:28, Charlie Monroe via swift-evolution 
> <[email protected]> wrote:
> 
> See https://github.com/apple/swift-evolution/blob/master/process.md - you 
> would need to make an official proposal and submit it as pull request. But 
> given the reaction here, it's unlikely to get approved.
> 
> Also, the ObjC code without nullability is getting fairly rare - all Apple's 
> frameworks are with nullability information (as far as I've checked) in macOS 
> 10.12, iOS 10. Third party libraries should be updated to use nullability 
> (and most libraries that are maintained already do).
> 
> 
>> On Jun 25, 2016, at 5:13 PM, Spromicky via swift-evolution 
>> <[email protected]> wrote:
>> 
>> So, its proposal is dead, or what we must to do to force it to 
>> swift-evolution repo on GitHub?
>> 
>>> Hello, everyone!
>>> 
>>> I wanna propose to you to remove force unwrapping in fuction signature for 
>>> swift code. That no sense in clear swift code. If we wanna use some 
>>> optional value as function param, that is not optional, we must unwrap it 
>>> before function call.
>>> People who new in swift look at how they old Obj-C code (without 
>>> nullability modifiers) translate in to swift:
>>> 
>>> Obj-C:
>>> - (void)foo:(NSInteger)bar {
>>> //...
>>> }
>>> 
>>> Swift transaliton:
>>> func foo(bar: Int!) {
>>> //...
>>> }
>>> 
>>> And think that force unwrapping in signature is good practice. And start 
>>> write functions in clear swift code like this:
>>> 
>>> func newFoo(bar: Int!) {
>>> //...
>>> }
>>> 
>>> and use it like this:
>>> 
>>> let bar: Int? = 1
>>> newFoo(bar)
>>> 
>>> And it really work, and they does not think that this can crash in case if 
>>> `bar` will be `nil`.
>>> But in clear swift we wanna work with parametrs in function that clearly or 
>>> optional, or not.
>>> 
>>> func newFoo(bar: Int) {
>>> //...
>>> }
>>> 
>>> or
>>> 
>>> func newFoo(bar: Int?) {
>>> //...
>>> }
>>> 
>>> When we write a new function we know what we need in this case and use 
>>> optional params or not.
>>> 
>>> So my proposal is remove force unwrapping(`!`) from function signatures, 
>>> cause it have no sense, and that confuse new users.
>>> 
>>> 
>>> 
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

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

Reply via email to