aboutsummaryrefslogtreecommitdiff
path: root/examples/41-struct-method-references/src/HelloWorld.shed
blob: 5bfd3631f9e4a5c0da6eec9898d6ca9e97534bdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
pub fun main() ! Io -> Unit {
    val one = Count(1).message;
    val two = Count(2).message;
    val three = Count(3).message;

    print!(one("apple", .exclaim = false));
    print!(two("bananas", .exclaim = false));
    print!(three("coconuts", .exclaim = true));
}

struct Count(value: Int) {
    fun message(this, noun: String, .exclaim: Bool) -> String {
        val prefix = if (this.value == 1) {
            "one"
        } else if (this.value == 2) {
            "two"
        } else {
            "many"
        };

        val exclamation = if (exclaim) { "!" } else { "" };

        prefix + " " + noun + exclamation + "\n"
    }
}