Size: a a a

Dart & Flutter по-русски

2020 August 15

AL

Anton Lempiy in Dart & Flutter по-русски
@tsinis
Друзья, глупый вопрос: как сделать Мар с двумя значениями и одним ключем (т.е. key/value/value)?
/// Represents a 2-tuple, or pair.
class Tuple2<T1, T2> {
 /// Returns the first item of the tuple
 final T1 item1;

 /// Returns the second item of the tuple
 final T2 item2;

 /// Creates a new tuple value with the specified items.
 const Tuple2(this.item1, this.item2);

 /// Create a new tuple value with the specified list [items].
 factory Tuple2.fromList(List items) {
   if (items.length != 2) {
     throw ArgumentError('items must have length 2');
   }

   return Tuple2<T1, T2>(items[0] as T1, items[1] as T2);
 }

 /// Returns a tuple with the first item set to the specified value.
 Tuple2<T1, T2> withItem1(T1 v) => Tuple2<T1, T2>(v, item2);

 /// Returns a tuple with the second item set to the specified value.
 Tuple2<T1, T2> withItem2(T2 v) => Tuple2<T1, T2>(item1, v);

 /// Creates a [List] containing the items of this [Tuple2].
 ///
 /// The elements are in item order. The list is variable-length
 /// if [growable] is true.
 List toList({bool growable = false}) =>
     List.from([item1, item2], growable: growable);

 @override
 String toString() => '[$item1, $item2]';

 @override
 bool operator ==(Object other) =>
     other is Tuple2 && other.item1 == item1 && other.item2 == item2;

 @override
 int get hashCode => hash2(item1.hashCode, item2.hashCode);
}


Usage:
const t1 = const Tuple2<String, int>('a', 10);
Map<String, Tuple2<String, int>> m = {"asd": t1}
источник

AL

Anton Lempiy in Dart & Flutter по-русски
источник

У

Урусай in Dart & Flutter по-русски
@tsinis
хм а если value1 и value2 разного типа? наприер double и String?
Объект создай
источник

У

Урусай in Dart & Flutter по-русски
Кстати есть пакет dartz. Там помимо туплов ещё есть куча штук из ФП ) Правда я с осторожностью смотрю на подобные костыли там, где им не место
источник

lf

les forest in Dart & Flutter по-русски
Anton Lempiy
/// Represents a 2-tuple, or pair.
class Tuple2<T1, T2> {
 /// Returns the first item of the tuple
 final T1 item1;

 /// Returns the second item of the tuple
 final T2 item2;

 /// Creates a new tuple value with the specified items.
 const Tuple2(this.item1, this.item2);

 /// Create a new tuple value with the specified list [items].
 factory Tuple2.fromList(List items) {
   if (items.length != 2) {
     throw ArgumentError('items must have length 2');
   }

   return Tuple2<T1, T2>(items[0] as T1, items[1] as T2);
 }

 /// Returns a tuple with the first item set to the specified value.
 Tuple2<T1, T2> withItem1(T1 v) => Tuple2<T1, T2>(v, item2);

 /// Returns a tuple with the second item set to the specified value.
 Tuple2<T1, T2> withItem2(T2 v) => Tuple2<T1, T2>(item1, v);

 /// Creates a [List] containing the items of this [Tuple2].
 ///
 /// The elements are in item order. The list is variable-length
 /// if [growable] is true.
 List toList({bool growable = false}) =>
     List.from([item1, item2], growable: growable);

 @override
 String toString() => '[$item1, $item2]';

 @override
 bool operator ==(Object other) =>
     other is Tuple2 && other.item1 == item1 && other.item2 == item2;

 @override
 int get hashCode => hash2(item1.hashCode, item2.hashCode);
}


Usage:
const t1 = const Tuple2<String, int>('a', 10);
Map<String, Tuple2<String, int>> m = {"asd": t1}
Map на 1 entry)
источник

@

@tsinis in Dart & Flutter по-русски
Урусай
Объект создай
Спасибо, а случайно нет под рукой примера такой реализации?
источник

У

Урусай in Dart & Flutter по-русски
@tsinis
Спасибо, а случайно нет под рукой примера такой реализации?
Ты объект с двумя членами не знаешь как создать?
источник

@

@tsinis in Dart & Flutter по-русски
Урусай
Ты объект с двумя членами не знаешь как создать?
в смысле простой класс? могу
источник

Ю

Юрий in Dart & Flutter по-русски
@tsinis
Спасибо, а случайно нет под рукой примера такой реализации?
Должны быть индейские видосы в ютубе
источник

AL

Anton Lempiy in Dart & Flutter по-русски
Урусай
Кстати есть пакет dartz. Там помимо туплов ещё есть куча штук из ФП ) Правда я с осторожностью смотрю на подобные костыли там, где им не место
Это пакет от гуглов, достаточно легкий. Можно тянуть.
источник

У

Урусай in Dart & Flutter по-русски
@tsinis
в смысле простой класс? могу
Ну вот и создай
источник

У

Урусай in Dart & Flutter по-русски
Anton Lempiy
Это пакет от гуглов, достаточно легкий. Можно тянуть.
Что же они нормальные туплы на уровне языка не ввели, я был бы рад )
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
@tsinis
хм а если value1 и value2 разного типа? наприер double и String?
MapEntry в качестве value
источник

@

@tsinis in Dart & Flutter по-русски
Roman Vasiliev
MapEntry в качестве value
т.е. это по сути будет Мар<key, Map>?
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
Смотря какую суть усматривать
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
MapEntry это не целая мапа
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
Это скорее Tuple
источник

AL

Anton Lempiy in Dart & Flutter по-русски
@tsinis
т.е. это по сути будет Мар<key, Map>?
MapEntry тот же tuple на 2 значения,
источник

AL

Anton Lempiy in Dart & Flutter по-русски
Map<String, MapEntry<String, double>>
источник

@

@tsinis in Dart & Flutter по-русски
Anton Lempiy
Map<String, MapEntry<String, double>>
Спасибо, пойду пробовать
источник