nim-reference
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 |