Let's expand on that situation. Dictionary would have these methods:

@discardableResult func removeValue(forKey key: Key) -> Value?
func removeValue(forKey key: Key) -> Self

I would argue that these two versions are not semantically identical: (1)
returns removed value while (2) does not.
Therefore they should have different names. In this case, we can rename
them like this:

@discardableResult func removeValue(forKey key: Key) -> Value?
func remove(key key: Key) -> Self

Or like this:

func removeValue(forKey key: Key) -> Value?
func remove(key key: Key) -> Void
func remove(key key: Key) -> Self

- Anton

2016-04-26 19:26 GMT+03:00 Jordan Rose <[email protected]>:

>
> On Apr 26, 2016, at 06:57, Антон Жилин via swift-evolution <
> [email protected]> wrote:
>
> +1
>
> > Also, technically we can assign a value to Void function
> This proposal will not disallow that. Just non-Void functions will be
> preferred when result is used.
>
> array.sort(..) // mutating
> let array2 = array.sort(..) // non-mutating, instead of array.sorted()
>
> I think, that's actually the best solution to mutating / non-mutating 
> convention!
>
> There are mutating methods that have return values, like
> Dictionary.removeValue(forKey:). Admittedly there’s no non-mutating version
> of that at the moment, but that doesn’t mean there couldn’t be.
>
> Jordan
>
>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to