Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #2975

Re: Question about function construction

From DrMajorBob <btreat1@austin.rr.com>
Newsgroups comp.soft-sys.math.mathematica
Subject Re: Question about function construction
Date 2011-06-06 10:24 +0000
Organization Steven M. Christensen and Associates, Inc and MathTensor, Inc.
Message-ID <isi9ta$m10$1@smc.vnet.net> (permalink)

Show all headers | View raw


Clear[pairs, hashTable]
constructHashTable[] :=
  Module[{p = {{"key1", "value1"}, {"key2", "value2"}, {"key3",
       "value3"}, {"key4", "value4"}}},
   hashTable[key_String] := ((hashTable[#[[1]]] = #[[2]]) & /@ p;
     hashTable@key); p]
pairs = constructHashTable[];
hashTable@"key1"

"value1"

hashTable /@ pairs[[All, 1]]

{"value1", "value2", "value3", "value4"}

or simpler:

Clear[pairs, hashTable]
constructHashTable[
    pairs_List] := (Clear@hashTable; (hashTable[#[[1]]] = #[[2]]) & /@
     pairs);
pairs = {{"key1", "value1"}, {"key2", "value2"}, {"key3",
     "value3"}, {"key4", "value4"}};
constructHashTable[pairs];
hashTable@"key1"

"value1"

hashTable /@ pairs[[All, 1]]

{"value1", "value2", "value3", "value4"}

or more flexible:

Clear[pairs, hashTable]
constructHashTable[
    pairs_List] := ((hashTable[pairs][#[[1]]] = #[[2]]) & /@ pairs);
pairs = {{"key1", "value1"}, {"key2", "value2"}, {"key3",
     "value3"}, {"key4", "value4"}};
constructHashTable[pairs];
hashTable[pairs]@"key1"

"value1"

hashTable[pairs] /@ pairs[[All, 1]]

{"value1", "value2", "value3", "value4"}

Bobby

On Sun, 05 Jun 2011 06:04:29 -0500, ZiYuan Lin <ziyuang@gmail.com> wrote:

> Hi, there.
>   I want to construct a function serving as a hash table. This is how I  
> make it:
>
>   ConstructHashtable[] :=
>    Module[{pairs = {{"key1", "value1"}, {"key2", "value2"}, {"key3",
>         "value3"}, {"key4", "value4"}}}, Clear[Hashtable];
>     Hashtable[key_?StringQ] := (Hashtable[#[[1]]] = #[[2]]) & /@ pairs;]
>
> And then I run the code above together with a test:
>
>   ConstructHashtable[]; Hashtable["key1"]
>
> Yet it returns all values:
>
>   {"value1", "value2", "value3", "value4"}
>
> But if I run it again:
>
>   Hashtable["key1"]
>
> It will get normal:
>
>   "value1"
>
> What is the reason for this? Thank you~
>


-- 
DrMajorBob@yahoo.com

Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar | Unroll thread


Thread

Re: Question about function construction DrMajorBob <btreat1@austin.rr.com> - 2011-06-06 10:24 +0000

csiph-web