diff --git a/src/util/map/_impl/_hashmap_put_impl.scad b/src/util/map/_impl/_hashmap_put_impl.scad index c5a9401a..5e12a7b9 100644 --- a/src/util/map/_impl/_hashmap_put_impl.scad +++ b/src/util/map/_impl/_hashmap_put_impl.scad @@ -11,11 +11,14 @@ function _hashmap_put(buckets, b_numbers, key, value, eq, hash) = _put(buckets, b_numbers, bucket, key, value, b_idx); function _replace(buckets, b_numbers, bucket, key, value, b_idx, k_idx) = - let( - leng_bucket = len(bucket), - n_bucket = [for(i = 0; i < leng_bucket; i = i + 1) i == k_idx ? [key, value] : bucket[i]] - ) - [for(i = 0; i < b_numbers; i = i + 1) i == b_idx ? n_bucket : buckets[i]]; + let(leng_bucket = len(bucket)) + [ + for(bi = 0; bi < b_numbers; bi = bi + 1) + if(bi == b_idx) + [for(ki = 0; ki < leng_bucket; ki = ki + 1) ki == k_idx ? [key, value] : bucket[ki]] + else + buckets[bi] + ]; function _put(buckets, b_numbers, bucket, key, value, b_idx) = [for(i = 0; i < b_numbers; i = i + 1) i == b_idx ? [each bucket, [key, value]] : buckets[i]]; \ No newline at end of file