[swift-dev] Possibility to makes classes partial as C# language

Kévin Machado machadokevin.dev at gmail.com
Thu Dec 10 03:07:38 CST 2015


Dear colleagues,

In swift we are able to add extension of classes that allows us to add
methods but we cannot add attributes, properties. C# language allows
developers to make its *classes *partial*. It is possible to split the
definition of class, struct or interface over two or more source files*.

Could we make swift able to do this stuff ?
*Are you interested about this kind of feature ?*
Proposed solution

Add partial keyword to alert the compiler that this class is splited over
one or more source files.

*Example*

  // Common logic for bank model
  partial class Bank {

    var amount: Int

    init() {
        amount = 0
        super.init()
    }

    func withdraw(amount amount: Int) {
        self.amount -= amount
    }

  }

  // Business logic for customer within bank model
  partial class Bank {

    unowned let owner: Customer

    init(customer: Customer) {
        self.owner = customer
    }

    func notifyCustomer() {
        // some code
    }

  }

<https://github.com/djnivek/swift-evolution/blob/56929274a31ff58295841a74a1eb2ace9db3e428/proposals/0008-makes-swift-class-struct-definitions-partial.md#alternative-solution>Alternative
solution

We also could add more feature with the extension paradigm. Adding
properties, attributes and more directly on the *extension scope*.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20151210/519305fc/attachment.html>


More information about the swift-dev mailing list