nim-wiki/Tips-and-tricks.md

38 lines
1.1 KiB
Markdown

* Use "nim check myfile.nim" to check your program for errors, without code generation. This makes the process quicker.
## Using reserved words as identifiers
You can use the slanted quote string syntax (stropping) if you need to use a reserved word as an identifier: ``var `type`: int``
## Tricks with conditional compilation
```nimrod
when defined(useSomeFeature):
const someSubFeature = true
type ID_Type = int32
var defaultUserName = "Frank"
else:
type ID_Type = int16
var defaultUserName = "Molly"
# `when` does not open a new scope, so `ID_Type` and `defaultUserName`
# are available here.
when isMainModule:
#this code is ran only when this module is the main compilation module
echo "This module was compiled on ", CompileDate, " at ", CompileTime
```
#### Defining `useSomeFeature`
* Do it when you compile: `$ nim c -d:useSomeFeature myApp`
* Put it in the local `nim.cfg` file `define:useSomeFeature`
## How do I echo in a ``{.noSideEffect.}`` proc?
You can use ``debugEcho`` for this.
## Language details
#### Shallow vs. DeepCopy
* https://forum.nim-lang.org/t/2665#16487