Adds brief intro to hashes module.
This commit is contained in:
parent
bde9d1ac07
commit
f45a1dbf1d
1 changed files with 28 additions and 1 deletions
|
|
@ -8,7 +8,34 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
## This module implements efficient computations of hash values for diverse
|
## This module implements efficient computations of hash values for diverse
|
||||||
## Nimrod types.
|
## Nimrod types. All the procs are based on these two building blocks: the `!&
|
||||||
|
## proc <#!&>`_ used to start or mix a hash value, and the `!$ proc <#!$>`_
|
||||||
|
## used to *finish* the hash value. If you want to implement hash procs for
|
||||||
|
## your custom types you will end up writing the following kind of skeleton of
|
||||||
|
## code:
|
||||||
|
##
|
||||||
|
## .. code-block:: nimrod
|
||||||
|
## proc hash(x: Something): THash =
|
||||||
|
## ## Computes a THash from `x`.
|
||||||
|
## var h: THash = 0
|
||||||
|
## # Iterate over parts of `x`.
|
||||||
|
## for xAtom in x:
|
||||||
|
## # Mix the atom with the partial hash.
|
||||||
|
## h = h !& xAtom
|
||||||
|
## # Finish the hash.
|
||||||
|
## result = !$h
|
||||||
|
##
|
||||||
|
## If your custom types contain fields for which there already is a hash proc,
|
||||||
|
## like for example objects made up of ``strings``, you can simply hash
|
||||||
|
## together the hash value of the individual fields:
|
||||||
|
##
|
||||||
|
## .. code-block:: nimrod
|
||||||
|
## proc hash(x: Something): THash =
|
||||||
|
## ## Computes a THash from `x`.
|
||||||
|
## var h: THash = 0
|
||||||
|
## h = h &! hash(x.foo)
|
||||||
|
## h = h &! hash(x.bar)
|
||||||
|
## result = !$h
|
||||||
|
|
||||||
import
|
import
|
||||||
strutils
|
strutils
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue