当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift RangeReplaceableCollection用法及代码示例


协议

RangeReplaceableCollection

支持用另一个集合的元素替换任意子范围元素的集合。

声明

protocol RangeReplaceableCollection<Element> : Collection where Self.SubSequence : RangeReplaceableCollection

概述

Range-replaceable 集合提供插入和删除元素的操作。例如,您可以通过调用 RangeReplaceableCollection 协议定义的任何插入或附加操作将元素添加到字符串数组。


var bugs = ["Aphid", "Damselfly"]
bugs.append("Earwig")
bugs.insert(contentsOf: ["Bumblebee", "Cicada"], at: 1)
print(bugs)
// Prints "["Aphid", "Bumblebee", "Cicada", "Damselfly", "Earwig"]"

同样,RangeReplaceableCollection 类型可以使用单个操作删除一个或多个元素。


bugs.removeLast()
bugs.removeSubrange(1...2)
print(bugs)
// Prints "["Aphid", "Damselfly"]"


bugs.removeAll()
print(bugs)
// Prints "[]"

最后,使用同名的replaceSubrange(_:with:) 方法将元素的子范围替换为另一个集合的内容。在这里,整数数组中间的三个元素被Repeated<Int> 实例的五个元素替换。


 var nums = [10, 20, 30, 40, 50]
 nums.replaceSubrange(1...3, with: repeatElement(1, count: 5))
 print(nums)
 // Prints "[10, 1, 1, 1, 1, 1, 50]"

符合RangeReplaceableCollection 协议

要将RangeReplaceableCollection 一致性添加到您的自定义集合,请添加一个空初始化程序和replaceSubrange(_:with:) 方法到您的自定义类型。 RangeReplaceableCollection 使用此初始化程序和方法提供所有其他方法的默认实现。例如,removeSubrange(_:) 方法是通过调用replaceSubrange(_:with:) 来实现的,其中newElements 参数的集合为空。您可以覆盖任何协议所需的方法来提供您自己的自定义实现。

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 RangeReplaceableCollection。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。