I agree we could disallow explicitly declaring implicitly unwrapped function parameters, but this will be needed for the clang importer since there will still be many C and ObjC APIs not tagged for nullability. On Wed, Jun 8, 2016 at 2:46 PM Saagar Jha via swift-evolution < [email protected]> wrote:
> +1 I agree. Unwrapping in the functional signature is confusing for the > user; many don’t realize that it puts the burden of checking on them. > Non-optional function parameters make this explicit by preventing passing > in Optional types, forcing the user to check, which they should be doing > anyway. > > On Wed, Jun 8, 2016 at 12:22 PM J. Charles M. N. via swift-evolution < > [email protected]> wrote: > >> >> This confused me at the beginning. >> >> But doesn't Int! In parameter type means the function is awaiting an >> unwrapped value so the user should ensure that it data parameter is >> available, valid, and unwrapped? >> >> -- >> J. Charles >> >> > Le 8 juin 2016 à 13:30, Spromicky via swift-evolution < >> [email protected]> a écrit : >> > >> > 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 >> > -- > -Saagar Jha > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution > -- Javier Soto
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
