aboutsummaryrefslogtreecommitdiff
path: root/examples/41-struct-method-references/src
diff options
context:
space:
mode:
Diffstat (limited to 'examples/41-struct-method-references/src')
-rw-r--r--examples/41-struct-method-references/src/HelloWorld.shed25
1 files changed, 25 insertions, 0 deletions
diff --git a/examples/41-struct-method-references/src/HelloWorld.shed b/examples/41-struct-method-references/src/HelloWorld.shed
new file mode 100644
index 00000000..5bfd3631
--- /dev/null
+++ b/examples/41-struct-method-references/src/HelloWorld.shed
@@ -0,0 +1,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"
+ }
+}