Anonymous user
Hash join: Difference between revisions
→{{header|Tcl}}: Corrected problems
(Added zkl) |
(→{{header|Tcl}}: Corrected problems) |
||
Line 913:
=={{header|Tcl}}==
Tcl uses hash tables to implement both its associative arrays and its dictionaries.
<lang tcl>package require Tcl 8.6
# Only for lmap, which can be replaced with foreach
proc joinTables {tableA
# Optimisation: if the first table is longer, do in reverse order
if {[llength $tableB] < [llength $tableA]} {
return [lmap pair [joinTables $tableB $
lreverse $pair
}]
Line 927 ⟶ 926:
foreach value $tableA {
#dict version# dict
}
set key [lindex $value $b]
if {![info
#dict version# if {![dict exists $hashmap $key]} continue
lappend result [list {*}$first $key {*}[lreplace $value $b $b]]
}
}
return $result
}
Line 952 ⟶ 955:
{{out}}
<pre>
18 Alan Zombies
{28 "Glory"} {"Glory" "Buffy"}▼
28 Alan Zombies
</pre>
|