tindexby.nim 547 B

1234567891011121314151617181920212223
  1. import tables
  2. doAssert indexBy(newSeq[int](), proc(x: int):int = x) == initTable[int, int](), "empty int table"
  3. var tbl1 = initTable[int, int]()
  4. tbl1.add(1,1)
  5. tbl1.add(2,2)
  6. doAssert indexBy(@[1,2], proc(x: int):int = x) == tbl1, "int table"
  7. type
  8. TElem = object
  9. foo: int
  10. bar: string
  11. let
  12. elem1 = TElem(foo: 1, bar: "bar")
  13. elem2 = TElem(foo: 2, bar: "baz")
  14. var tbl2 = initTable[string, TElem]()
  15. tbl2.add("bar", elem1)
  16. tbl2.add("baz", elem2)
  17. doAssert indexBy(@[elem1,elem2], proc(x: TElem): string = x.bar) == tbl2, "element table"