Skip to content

Primary constructor #612

@dzikoysk

Description

@dzikoysk

Current candidate: v3

module lang

/*
 * PROPOSALS
 */

/* v1 */
open type Foo {

    shared String name
    shared Int value
    internal nil Bar optional

    init (String name, Int value) {
        this.name = name
        this.value = value
    }

    init (String name, Int value, Bar optional) {
        this(name, value)
        this.optional = optional
    }

}

/* v2 */
open type Foo (

    shared String name
    shared Int value

) {

    internal nil Bar optional

    init (String name, Int value, Bar optional) {
        this(name, value)
        this.optional = optional
    }

}

/* v3 */
open type Foo {

    shared String name
    shared Int value

    ~ internal State state1
    ~ internal mut State mutableState2 = State()

    init (base) {
        this.mutableState1 = State(name, value)
    }

}

/* v4 */
open type Foo {

    shared base String name
    shared base Int value

    internal State state1
    internal mut State mutableState2 = State()

    init (base) {
        this.mutableState1 = State(name, value)
    }

}

/* v5 */
open type Foo {

    shared String name
    shared Int value

    internal ext State state1
    internal mut ext State mutableState2 = State()

    init (base) {
        this.mutableState1 = State(name, value)
    }

}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions