Swift.Расширение с иерархией предложений where - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел бы добавить расширение к Dictionary<Hashable, RangeReplaceableCollection>, которое добавило бы некоторые функциональные возможности только для RangeReplaceableCollection where RangeReplaceableCollection.Element is Value type

Я хотел бы добавить значение коллекции, которая является значением в словаре - в основном из здесь .Как было отмечено в комментариях, есть более короткий способ сделать это.Можно добавить к dict со значением по умолчанию, используя dict[key, default: value], хотя в документации по Словару есть примечание:

Не используйте этот индекс для изменения значений словаря, если тип значения словаря является классом.В этом случае значение по умолчанию и ключ не записываются обратно в словарь после операции.

Таким образом, наивный способ реализации моего расширения был примерно таким:

extension Dictionary 
    where Value: RangeReplaceableCollection 
         where RangeReplaceableCollection.Element is ValueType {

Мне было интересно, возможно ли достичь чего-то подобного (и если да, то как?).

Я также думал о чем-то вроде: protocol ValueRangeReplaceableCollection : RangeReplaceableCollection where RangeReplaceableCollection.Element: Int {}, чтобы использовать позже как ограничение по стоимости, но я не мог 'Я не могу придумать, как правильно это сделать.

Буду признателен за любые мысли по этому поводу.

РЕДАКТИРОВАТЬ: я понимаю, что вы можете просто использовать расширение из сущности и не заботиться о ценности/ ссылочные типы.Мой вопрос больше о дженериках Swift.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...