【发布时间】:2018-07-26 14:51:25
【问题描述】:
Set 是唯一元素的无序集合。和数组差不多。
我想在Set 或String 中添加/插入多个元素。但是只提供了一种方法,只能插入一个元素(接受单个 Set 元素作为参数参数),并且我收集了字符串(id)。
@discardableResult mutating func insert(_ newMember: Set.Element) -> (inserted: Bool, memberAfterInsert: Set.Element)
我该怎么做?
我尝试过的:
我尝试创建一个与insert(_:) 方法非常相似的扩展,但它可以接受多个 Set 元素。这与使用迭代而不是收集相同,但不需要在任何地方手动处理它。
extension Set {
@discardableResult mutating func insert(_ newMembers: [Set.Element]) -> (inserted: Bool, memberAfterInsert: Set.Element) {
newMembers.forEach { (member) in
self.insert(member)
}
}
}
如果我按预期返回一个元组,但不知道如何、在哪里(哪一行)以及返回什么值,它应该可以工作。
这是错误信息。
预期返回 '(inserted: Bool, memberAfterInsert: Set.Element)'的函数中缺少返回
有什么办法可以解决这个问题。有没有更好的解决方案/方法来处理这个操作?
【问题讨论】:
-
为什么要返回元组?
-
这是单个 Set 元素的方法
insert(_:)的默认/实际定义。我想创建一个相同的函数,但它应该接受多个 Set 元素。 -
但是您希望行为是什么?在什么情况下它会返回
inserted: true?何时插入一个值?没有表现不同的“相同功能”。由您决定函数返回什么。何时插入所有值?formUnion没有提供您的用例需要什么?在任何情况下,正如米兰所说,如果你想退回它,你需要真正退回它。
标签: ios swift set tuples swift-extensions