At first glance I though about this:

// Module A
open class X {
     
    open func b() {}
}

// Module B

class Y : X {
    addinto func b() {
        explodeExploit()
    }
}

class Z : X {}

Z().b() // does this also call my `explodeExploit` :D ?
Are you speaking of code injection of a sugar like syntax like 
override(before/after) like Sean suggested?



-- 
Adrian Zubarev
Sent with Airmail

Am 16. November 2016 um 23:30:35, Mustafa Sabur via swift-evolution 
([email protected]) schrieb:

Hallo,

I have a very simple suggestion. And I’m not very sure then it haven’t been 
discussed already, so I’m sorry if that is the case.
I would like to see the ability to just add code to base methods instead of 
overriding it and calling supers method. So basically an extension for methods.

Example:

Now:
override func viewDidLoad() {
super.viewDidLoad()
// Your code
}

Suggestion:
addinto func viewDidLoad() {
// Your code
}

My reasons:
1. Its very verbose about your intentions, which fits into Swift style. The 
thing you actually want is not overriding but appending. 
2. You cannot make the mistake of forgetting to call the supers method.
3. It open ways to introducing ‘semi-final’ methods, which cannot be override 
but you still can append to it. 
    This to make sure your API implementation will always be executed . I’m 
thinking about a keyword like extendable to specify that you can only add to it.
4. Less code.

I can’t think of any cons... Thought I can imagine that the benefits are quite 
small and maybe not worth the effort.
I would like to read some thoughts about this. Thank you!

Kind regards,
Mustafa Sabur



_______________________________________________
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