🌎Hello, World
The worlds best example.
#[main]
fn main() {
pln("Hello, world!");
}
Name this file "hello.stof" and run it with the CLI: stof run hello.stof
. The run command will execute all functions with a #[main]
attribute, each as a separate async process (no async keyword or attribute needed).
Stof is a document of data, though, so we can define our message as a field too:
message: "Hello, world!"
#[main]
fn main() {
pln(self.message);
}
In this context, "self" is the main root (called "root") object for the document. It helps to think of JSON as an example here (and this will work just fine as-is):
{
"message": "Hello, world!"
#[main]
fn main() {
pln(self.message);
}
}
The keywords "self" and "super" help navigate which object you'd like to work with, referencing the current object or the parent object, respectively. However, every object can be accessed absolutely by name also.
str message: "Hello, world!"; // types maintain consistency and readability
#[main]
fn main() {
pln(root.message); // the name of this object is "root" - the default doc root
}
Last updated
Was this helpful?