Modules and Interfaces Examples¶
Module export and import-all¶
Files: examples/cons.aja and examples/main_import_all.aja
export (
ally,
delly,
counter
)
fuc ally(hisname: str, hername: str) -> str:
result = hisname + " & " + hername
return result
fuc delly(his: str) -> str:
out = his + "!"
return out
counter = 7
import (
"cons"
)
print(cons.ally("Aria", "Nox"))
print(cons.delly("Hello"))
print(cons.counter)
Selective import¶
File: examples/main_import_selective.aja
import (
{
ally
delly
counter
} from "cons"
)
print(ally("Mio", "Lyn"))
print(delly("Hey"))
print(counter)
No-comma multi import¶
File: examples/import_many_nocomma.aja
import (
"cons"
"oneline_mod"
)
print(cons.counter)
print(oneline_mod.hi("aja"))
Interfaces (single file)¶
File: examples/interface_basic.aja
interface Speaker:
speak(prefix: str) -> str
type Dog:
name: str
type Cat:
name: str
fuc (d: Dog) speak(prefix: str) -> str:
return prefix + " " + d.name
fuc (c: Cat) speak(prefix: str) -> str:
return prefix + " " + c.name
fuc intro(s: Speaker) -> str:
return s.speak("Hello")
a = Dog("Rex")
b = Cat("Mimi")
print(intro(a))
print(intro(b))
Interfaces (cross-module)¶
Files: examples/interface_module_lib.aja and examples/interface_module_main.aja
interface Speaker:
speak(prefix: str) -> str
type User:
name: str
fuc (u: User) speak(prefix: str) -> str:
return prefix + " " + u.name
fuc make(name: str) -> Speaker:
u = User(name)
return u
export (
Speaker,
make
)
import (
{
Speaker
make
} from "interface_module_lib"
)
fuc greet(s: Speaker) -> str:
return s.speak("Hi")
x = make("Aja")
print(greet(x))