Skip to content

Map "putUntilAbsent" or similar? #3186

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
DartBot opened this issue May 23, 2012 · 3 comments
Closed

Map "putUntilAbsent" or similar? #3186

DartBot opened this issue May 23, 2012 · 3 comments
Labels
area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. closed-not-planned Closed as we don't intend to take action on the reported issue

Comments

@DartBot
Copy link

DartBot commented May 23, 2012

This issue was originally filed by [email protected]


I'd like to run a function which generates a new key until I have a key that doesn't already exist in my Map. Once I've got a new key, add it and the value to the map. Is there a better way of doing this?

I cooked up putUntilAbsent(k, v, f()) in the class that implements Map.


putUntilAbsent(k, v, fn()) {
  while (containsKey(k)) {
    k = fn();
  }
  this.Cache[k] = v;
  return v;
}

@kasperl
Copy link

kasperl commented May 24, 2012

Added Area-Library, Triaged labels.

@DartBot
Copy link
Author

DartBot commented May 24, 2012

This comment was originally written by [email protected]


Maybe "putWhenAbsent" is a better name..

@lrhn
Copy link
Member

lrhn commented Apr 18, 2013

I think this is a little too specialized to be in the general map interface.

You can simulate this by:
  putWhenAbsent(Map map, var key, var value, keygen()) {
    bool put = false;
    puthook() { put = true; return value; }
    while (true) {
      map.putIfAbsent(key, puthook);
      if (put) return;
      key = keygen();
    }
  }


Added WontFix label.

@DartBot DartBot added Type-Defect area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. labels Apr 18, 2013
@kevmoo kevmoo added closed-not-planned Closed as we don't intend to take action on the reported issue and removed resolution-wont_fix labels Mar 1, 2016
copybara-service bot pushed a commit that referenced this issue Oct 29, 2021
Changes:
```
> git log --format="%C(auto) %h %s" 78bc50c..0035a40
 https://dart.googlesource.com/pub.git/+/0035a40f Fix echo mode crash on `token add` (#3194)
 https://dart.googlesource.com/pub.git/+/a75a8c17 Don't warn against discontinued transitive dependencies (#3195)
 https://dart.googlesource.com/pub.git/+/cf2ed105 Fix analytics code (#3197)
 https://dart.googlesource.com/pub.git/+/08e13f7b Remove unused golden files (#3189)
 https://dart.googlesource.com/pub.git/+/b6293b80 Fix log message related to `pub global activate`  (#3187)
 https://dart.googlesource.com/pub.git/+/94f6b477 Introducing command-line interface tests (#3161)
 https://dart.googlesource.com/pub.git/+/3ba8134f More details from getExecutableForCommand (#3186)
 https://dart.googlesource.com/pub.git/+/a2dbcfff Shorthand syntax for hosted dependencies (#3133)
 https://dart.googlesource.com/pub.git/+/435e4e3f Shuffle analytics (#3185)

```

Diff: https://dart.googlesource.com/pub.git/+/78bc50c7833451c24e531713362e46fd50621ff0~..0035a40f25d027130c0314571da53ffafc6d973b/
Change-Id: Idfd7c382985d1ad3e3ad87a621dc79d3b74e898e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/218620
Reviewed-by: Jonas Jensen <[email protected]>
Commit-Queue: Sigurd Meldgaard <[email protected]>
copybara-service bot pushed a commit that referenced this issue Sep 27, 2022
…2 revisions)

https://dart.googlesource.com/dartdoc/+log/22facbb145d7..a6676ee58628

2022-09-27 [email protected] client search cleanup (#3186)
2022-09-27 [email protected] tool/grind.dart: cleanup directory signature calculation (#3187)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-doc-dart-sdk
Please CC [email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Dart Documentation Generator: https://github.com/dart-lang/dartdoc/issues
To file a bug in Dart SDK: https://github.com/dart-lang/sdk/issues

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Tbr: [email protected]
Change-Id: I0ff3cb34bb645b5e084a562862718e303e581643
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/261261
Commit-Queue: DEPS Autoroller <[email protected]>
Commit-Queue: Nate Bosch <[email protected]>
Reviewed-by: Nate Bosch <[email protected]>
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. closed-not-planned Closed as we don't intend to take action on the reported issue
Projects
None yet
Development

No branches or pull requests

4 participants