Nim Reference
Common constructs |
|
---|---|
const x = 5 | Compile-time constant |
let y = "Hello" | Immutable binding |
var z = [1, 2, 3] | Mutable variable |
proc name(param: int): ReturnType = body | |
method name(param: float): ReturnType = body | |
iterator items(list: seq[int]): int = body | |
template name(param: typed) = body | |
macro name(param: string): untyped = body | |
if x > 5: body elif y == "Hello": body else: body |
case x of 5: body of 1, 2, 3: body of 6..30: body |
for item in list: body |
for i in 0..<len(list): body |
while x == 5: if y.len > 0: break else: continue |
try: raise err except Exception as exc: echo(exc.msg) finally: discard |
Input/Output |
|
---|---|
echo(x, 42, "text") | readFile("file.txt") |
stdout.write("text") | writeFile("file.txt", "contents") |
stderr.write("error") | open("file.txt", fmAppend) |
stdin.readLine() |
Type definitions |
||
---|---|---|
type MyType = object field: int |
type Colors = enum Red, Green, Blue, Purple |
type MyRef = ref object field*: string |
Common infix operations (highest precedence first) |
|
---|---|
* | Multiplication |
/ | Division (returns float) |
div | Division (returns integer) |
mod | Modulus |
shl | Bit shift left |
shr | Bit shift right |
% | String formatting |
+ | Addition |
- | Subtraction |
& | Concatenation |
.. | Constructs a slice |
== <= < >= > != not | Boolean comparisons |
in notin | Determines whether a value is within a container |
is isnot | Compile-time type equivalence |
of | Run-time instance of type check |
and | Bitwise and boolean and operation |