dictionary 0.2.4 dictionary: ^0.2.4 copied to clipboard
A more composable alternative to Dart's native Map implementation
Dictionary #
A more composable alternative to Dart's native Map
implementation. All
operations that fetch an element form the Dictionary
return an Option
type. If the fetched value existed then the Option
typed returned will
be Some
and will have the value wrapped inside. If the key was not found
in the Dictionary
then the Option
type returned will be None
.
The impetus behind returning Option
types instead of raw values is you
can focus more on the composition and flow of your logic instead of
worrying about defensive Map#containsKey
safety checks.
Tested with Dart 0.4.7
Examples #
import 'package:dictionary/dictionary.dart';
main() {
var dict = new Dictionary.fromMap({
'A': 'a',
'B': 'b',
'C': 'c'
});
var other = new Dictionary.fromMap({
'C': 'c',
'D': 'd',
'E': 'e'
});
var lowerA = dict.getOrElse('A', 'N/A');
var lowerB = dict['B'].getOrElse('N/A');
var lowerC = dict.get('C').getOrElse('N/A');
var findA = dict.findKey((v, k) => k == 'B').getOrElse('N/A');
var findB = dict.findValue((v, k) => v == 'b').getOrElse('N/A');
var findBs = dict.partition((v, k) => v == 'b');
var mapped = dict.map((v, k) => v + " - mapped");
var byValue = dict.groupBy((v, k) => v);
var diffKey = dict.differenceKey(other);
var diffVal = dict.difference(other);
var interKey = dict.intersectionKey(other);
var interVal = dict.intersection(other);
var merged = dict.merge(other);
var reduced = dict.reduce((memo, v, k) => memo + v);
var folded = dict.fold(new Dictionary(), (memo, v, k) {
memo[k] = v + " - folded";
return memo;
});
}