[swift-evolution] Object declarations

Jordan Rose jordan_rose at apple.com
Fri Dec 11 16:55:38 CST 2015


-1. Enforced singletons lead to code that can't be unit-tested. Local types are occasionally convenient and they can't be unit-tested either, but spending one extra line to name the thing isn't going to hurt. You also can't pick an initializer here (at least not in this version).

IMHO, this just adds "another kind of thing" just to make code shorter, and "shorter" is not the right goal for Swift.

Best,
Jordan


> On Dec 11, 2015, at 14:07, Marc Knaup via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Hey guys,
> 
> I am working on a proposal which touches (and could even partially depend on) another interesting concept which I think would be a great addition for Swift.
> 
> Object declarations could be a way to declare a class or struct with exactly one instance. They are perfect for singletons, anonymous subclasses and to anonymously implement a protocol.
> 
> Here some examples how it could look like:
> 
> // singleton
> object GlobalResource {
>     func doSomething() { … }
> }
> 
> let resource = GlobalResource
> 
> // could all be the same
> resource.doSomething()
> GlobalResource.doSomething()
> GlobalResource.Type.doSomething()
> 
> 
> // anonymous subclass
> class ViewController: UIViewController {
> 
>     override func loadView() {
>         view = object: UIView {
>             // configure view
>         }
>     }
> }
> 
> 
> // anonymous protocol implementation
> protocol TapHandler {
>     func handleTap()
> }
> 
> view.tapHandler = object: TapHandler {
>     func handleTap() {
>         // …
>     }
> }
> 
> 
> Kotlin is an example for a a modern language which uses this concept:
> https://kotlinlang.org/docs/reference/object-declarations.html <https://kotlinlang.org/docs/reference/object-declarations.html>
> 
> 
> What do you think about such an addition?
>  _______________________________________________
> 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/20151211/520d4d85/attachment.html>


More information about the swift-evolution mailing list