[swift-evolution] Add code to super methods.
Adrian Zubarev
adrian.zubarev at devandartist.com
Wed Nov 16 16:42:57 CST 2016
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 (swift-evolution at swift.org) 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
swift-evolution at swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161116/4ef331f8/attachment.html>
More information about the swift-evolution
mailing list