Statements and Control Flow
Klyn uses indentation-defined blocks and a compact statement vocabulary. This page covers the control-flow statements you will use constantly in real code.
count = 10
name as String = "Ada"
count += 1
count--
Assignment updates an existing variable while preserving its established type.
score = 72
if score >= 90:
print("excellent")
elif score >= 50:
print("pass")
else:
print("retry")
value = 2
match value:
case 0:
label = "zero"
case 1 | 2:
label = "small"
case 3 to 10:
label = "range"
default:
label = "other"
match compares one subject against ordered cases. A case can use an exact value,
several alternatives separated by |, or an inclusive interval with to.
default handles the fallback branch.
text = "dominique@example.com"
match text:
case /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,}$/:
kind = "email"
case /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/:
kind = "date"
default:
kind = "unknown"
Regex cases use the same literal syntax as regular expressions and test the subject with pattern matching.
command = "ls"
action = match command:
case "ls" | "dir":
"listing"
case "ps":
"processes"
default:
"unknown"
A match expression returns the expression produced by the first matching branch.
i = 0
while i < 3:
print(i)
i += 1
Use while when the continuation condition depends on values updated in the body.
for i = 0 to 5:
print(i)
Both bounds are inclusive. The example prints 0 through 5.
When iterating over indices, use an explicit upper bound such as
values.size - 1.
for value in [10, 20, 30]:
print(value)
config = {"theme": "dark", "fullscreen": true}
for key in config:
print(key)
for pair in config.items():
print(pair)
Iterating directly over a map yields keys. Use keys(), values(), or
items() when you want a specific view.
while true:
text = input("> ")
if text == "":
continue
if text == "quit":
break
print(text)
count = 1
featurePending = true
assert count > 0
if featurePending:
pass
assert is appropriate for invariants and tests. pass is an explicit
placeholder that leaves a block intentionally empty.