Re: Question about function construction
- To: mathgroup at smc.vnet.net
- Subject: [mg119491] Re: Question about function construction
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Mon, 6 Jun 2011 06:24:41 -0400 (EDT)
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 at 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 at yahoo.com