aboutsummaryrefslogtreecommitdiff
path: root/examples/41-struct-method-references/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-03-08 13:39:40 +0000
committerMichael Williamson <mike@zwobble.org>2025-03-08 13:39:40 +0000
commit8cfdfc92fcf41f5db6d30015b20457ca64f0c3ce (patch)
tree7dfd0d403b6b8add040eb1e09515194ca6b26065 /examples/41-struct-method-references/src
parent2462a913d149fe896134519d95d65c3adfa30e47 (diff)
Support method calls from other namespaces (without Wasm support)
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"
+ }
+}