Mercurial > repos > tabletprog
changeset 164:75be44ed9df5
Dict improvements
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 10 Aug 2013 22:26:26 -0700 |
parents | f594e6836c44 |
children | fe816637fcc4 |
files | modules/dict.tp |
diffstat | 1 files changed, 18 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/modules/dict.tp Sat Aug 10 19:09:22 2013 -0700 +++ b/modules/dict.tp Sat Aug 10 22:26:26 2013 -0700 @@ -10,10 +10,10 @@ els <- #[] find <- :tofind { idx <- 0 - while: { - if: idx < (els length) { + while: { + if: idx < (els length) { ((els get: idx) key: ) != tofind - } else: {false} + } else: {false} } do: { idx <- idx + 1 } @@ -29,11 +29,11 @@ } self } - + get <- :k { get: k withDefault: false } - + get:withDefault <- :k default { idx <- find: k if: idx < 0 { @@ -42,13 +42,25 @@ (els get: idx) val } } - + + get:elseSet <- :k :else { + idx <- find: k + if: idx < 0 { + v <- else: + els append: (key: k val: v) + v + } else: { + (els get: idx) val + } + } + foreach <- :l { foreach: els :idx el { l: (el key) (el val) } } + length <- { els length } } }