mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 21:43:33 +00:00
43 lines
771 B
Nim
Executable File
43 lines
771 B
Nim
Executable File
|
|
template withOpenFile(f: expr, filename: string, mode: TFileMode,
|
|
actions: stmt): stmt =
|
|
block:
|
|
var f: TFile
|
|
if open(f, filename, mode):
|
|
try:
|
|
actions
|
|
finally:
|
|
close(f)
|
|
else:
|
|
quit("cannot open for writing: " & filename)
|
|
|
|
withOpenFile(txt, "ttempl3.txt", fmWrite):
|
|
writeln(txt, "line 1")
|
|
txt.writeln("line 2")
|
|
|
|
# Test zero argument template:
|
|
template ha: expr = myVar[0]
|
|
|
|
var
|
|
myVar: array[0..1, int]
|
|
|
|
ha = 1
|
|
echo(ha)
|
|
|
|
|
|
# Test identifier generation:
|
|
template prefix(name: expr): expr = `"hu" name`
|
|
|
|
var `hu "XYZ"` = "yay"
|
|
|
|
echo prefix(XYZ)
|
|
|
|
template typedef(name: expr, typ: typeDesc) =
|
|
type
|
|
`T name`* = typ
|
|
`P name`* = ref `T name`
|
|
|
|
typedef(myint, int)
|
|
var x: PMyInt
|
|
|