Skip to content

07 · Pattern Matching

Name a reusable pattern

Declare pattern ActiveUser(name) = User { name, active: true, .. } and reuse it in matching or function clauses. Parameters supply the caller's bindings; constructors resolve where the alias was defined. Alias bodies currently cannot contain view transformers or capture outer values through pins or default expressions.

On this page

Declare pattern ActiveUser(name) = User { name, active: true, .. } and reuse it in matching or function clauses. Parameters supply the caller's bindings; constructors resolve where the alias was defined. Alias bodies currently cannot contain view transformers or capture outer values through pins or default expressions.

Complete example

Name a reusable pattern.

66-pattern-aliases.zolo
Playground
// Reuse one selection rule in display logic and filtered iteration.

struct User { name: str, active: bool }
pattern ActiveUser(name) = User { name, active: true, .. }

fn label(value ActiveUser(name): User) -> str = "Active: {name}"
fn label(value _: User) -> str = "Inactive"

let users = [
    User { name: "Ana", active: true },
    User { name: "Beto", active: false },
]
for case ActiveUser(name) in users { print(name) }
print(label(users[0]))
print(label(users[1]))

Reference

Reference · Source program

zolo run examples/features/66-pattern-aliases.zolo --no-cache

Global index

Find your way through Zolo

Try an idea

Start here

9 results

9 results

enespt-br