Block Syntax
Soli supports two block termination styles: end keyword and curly braces {}. Both are interchangeable.
When to use each style
- •
end- Recommended for empty blocks, simple guards, and cleaner syntax - •
{}- Useful for multi-line blocks with many statements
Functions
Using Curly Braces
def greet(name: String) {
print("Hello, " + name + "!")
}
def add(a: Int, b: Int) -> Int {
a + b
}
Using end Keyword
def greet(name: String)
end
def add(a: Int, b: Int) -> Int
a + b
end
If Statements
Using Curly Braces
let age = 18
if age >= 18
print("Adult")
end
if age >= 21
print("Can drink")
else
print("Too young")
end
Using end Keyword
let age = 18
if age >= 18
print("Adult")
end
if age >= 21
print("Can drink")
else
print("Too young")
end
While Loops
Using Curly Braces
let i = 0
while i < 5
print(i)
i = i + 1
end
Using end Keyword
let i = 0
while i < 5
end
let j = 0
while j < 5
print(j)
j = j + 1
end
For Loops
Using Curly Braces
for item in items
print(item)
end
Using end Keyword
for item in items end
for item in items
print(item)
end
Classes
Using Curly Braces
class Person
name: String
new(name: String)
this.name = name
end
def greet
print("Hello, " + this.name)
end
end
Using end Keyword
class Person end
class Person
name: String
new(name: String) end
def greet end
end
Mixed Usage
You can freely mix both styles in the same codebase:
# Empty function - use end
def placeholder end
# Function with body - use end
def process_data(data)
validate(data)
transform(data)
save(data)
end
# Empty class - use end
class EmptyMarker end
# Class with methods - use end
class Service
def init end
def process
fetch_data()
end
end
# Control flow - use end for simple guards
if user.is_admin()
end
if user.is_valid()
authorize(user)
end
Quick Reference
| Construct | Braces Style | end Style |
|---|---|---|
| Function | def foo { } |
def foo end |
| If | if cond { } |
if cond end |
| While | while cond { } |
while cond end |
| For | for x in items { } |
for x in items end |
| Class | class Foo { } |
class Foo end |