Example: user input
Reading input from the user and command-line arguments.
Reading from stdin
Use io::readline to read a line of input:
use io
fn main() {
"Enter your name: " print
io::readline! -> name
"Hello, " print name print "!" print nl
}
io::readline is a fallible function that reads one line from stdin (without the trailing newline). Use ! to abort on error, or handle errors explicitly:
use io
fn main() {
"Enter your name: " print
io::readline switch {
Ok {
-> name
"Hello, " print name print "!" print nl
}
_ {
"Could not read input" print nl
}
}
}
Reading numbers
io::readline returns a string. Use cast to convert to other types:
use io
fn main() {
"Enter a number: " print
io::readline! cast<i64> -> n
"Double: " print n 2 * print nl
}
Interactive loop
Read input repeatedly until EOF (Ctrl+D):
use io
fn main() {
loop {
"> " print
io::readline switch {
Ok {
-> line
"You said: " print line print nl
}
_ {
nl
break
}
}
}
"Goodbye!" print nl
}
Command-line arguments
Use the read builtin to access command-line arguments:
fn main() {
read -> argc
argc 0 == if {
"No arguments provided" print nl
} else {
"Arguments:" print nl
argc 0 > if {
-> arg1
" 1: " print arg1 print nl
}
argc 1 > if {
-> arg2
" 2: " print arg2 print nl
}
}
}
Run with: quad run args.qd -- hello world
The read builtin pushes all arguments onto the stack with the count on top.
Simple calculator
A complete example combining input and parsing:
use io
use str
fn main() {
loop {
"calc> " print
io::readline switch {
Ok {
-> line
line str::len 0 == if {
continue
}
line cast<f64> -> num
"= " print num print nl
}
_ {
nl break
}
}
}
}
What's next?
Learn about Writing Tests to ensure your code works correctly.