Swift 在数组切片中的“fromAfter”调用是什么?

2024-04-29

斯威夫特 3 有upTo and through

分别是非包含的、包含的

func 前缀(upTo: Int)
返回从集合开头开始的子序列最多但不包括,指定位置。

.

func 前缀(通过:Int)
返回从集合开头开始的子序列through指定位置。

另一端有from

func 后缀(来自:Int)
返回从指定位置到集合末尾的子序列。

这似乎是包容性的

远端的非包含呼叫是什么?

    // sum the numbers before, and after, an index i...

    let lo = A.prefix(upTo: i).reduce(0,+)    // means noninclusive
    let hi = A.suffix(from: i+1).reduce(0,+)  // 'from' seems to mean inclusive

我不知道叫什么?必须用+1 来写真是太糟糕了。


目前没有非包容性的suffix方法用于Collectionstdlib 中的类型,但对于此用例,您可以通过组合轻松实现自己的类型suffix(from:) with dropFirst(_:)(恕我直言,这比from: idx+1), e.g.

extension Collection where SubSequence == SubSequence.SubSequence {
    public func suffix(after start: Index) -> SubSequence {
        return suffix(from: start).dropFirst(1)
    }
}

应用于您的示例(分别对给定分区号(或索引)之前和之后的数字求和,不包括分区号):

/* in this example, invalid indices will yield a full-array sum into
   lo or hi, depending on high or low index out of bounds, respectively */
func splitSum(of arr: [Int], at: Int) -> (Int, Int) {
    guard at < arr.count else { return (arr.reduce(0, +), 0) }
    guard at >= 0 else { return (0, arr.reduce(0, +)) }

    let lo = arr.prefix(upTo: at).reduce(0, +)
    let hi = arr.suffix(after: at).reduce(0, +)

    return (lo, hi)
}

// example usage
let arr = [Int](repeating: 1, count: 10)
print(splitSum(of: arr, at: 4)) // (4, 5)

留下非包容性的主题suffix方法,分割总和计算的另一种方法是使用以下之一the split(...) methods https://developer.apple.com/reference/swift/collection/2297966-split for Collection types:

func splitSum(of arr: [Int], at: Int) -> (Int, Int) {
    guard at < arr.count else { return (arr.reduce(0, +), 0) }
    guard at >= 0 else { return (0, arr.reduce(0, +)) }

    let sums = arr.enumerated()
        .split (omittingEmptySubsequences: false) { $0.0 == at }
        .map { $0.reduce(0) { $0 + $1.1 } }

    guard let lo = sums.first, let hi = sums.last else { fatalError() }

    return (lo, hi)
}

// example: same as above

我相信split然而,版本有点冗长,并且在语义上也不太能显示代码的意图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 在数组切片中的“fromAfter”调用是什么? 的相关文章

  • 有没有办法将operator.itemgetter与切片表示法一起使用?

    我在 python 列表中有一堆 numpy 数组lst 我可以对这些数组之一进行切片 通过使用以下命令对其进行索引来获取特定视图 1 例如 我需要将此切片操作应用于所有 numpy 数组lst 使用生成器理解 我可以这样做 my arra
  • 我想在 iOS Swift 中摇动谷歌地图标记

    我正在开发一个项目 我想在谷歌地图上摇动标记 我正在使用自定义标记图标在地图上表示 就像一个人的头在摇晃 我不知道该怎么做并且搜索了很多但没有找到任何解决方案 您可以添加一个CAKeyframeAnimation or CABasicAni
  • 如何将数组转换为 UnsafeMutablePointer Swift 3.0?

    这是我在以前版本的 Swift 中的可行代码 let imageOptionsDictKeys kCVPixelBufferPixelFormatTypeKey kCVPixelBufferWidthKey kCVPixelBufferHe
  • 我正在尝试导入 GoogleAPIClient 或 GoogleAPIClientForREST

    我正在努力追随谷歌的教程 https developers google com drive ios quickstart ver swift制作他们的 QuickStart 应用程序来学习如何使用 Swift 进行 API 调用 我完全按
  • 线程 1:信号 SIGABRT

    当我为 Xcode 项目运行模拟时出现上述错误 这出现在 O abort with payload 文件中 dyld abort with payload 0x10aae66f8 lt 0 gt movl 0x2000209 eax imm
  • 尝试以紧凑模式访问 UITextView 时 iMessage 扩展程序崩溃

    下面是我在 iMessage 应用程序中的完整代码 class MessagesViewController MSMessagesAppViewController IBOutlet weak var messageView UITextV
  • Swift 3.0 将图像写入目录

    我有一个简单的ImagePicker供用户选择或拍摄个人资料照片 我想保存这个image to the Home Directory方便以后加载 问题是未设置图像类型 Save Image PPimagePicked image let i
  • 对象切片,有优势吗?

    对象切片是指当子类被分配给基类时 对象失去一些属性或功能 就像是 Class A Class B extends A Class SomeClass A a new A B b new B Some where if might happe
  • 如何在本地闭包中调用非逃逸闭包? [复制]

    这个问题在这里已经有答案了 我有一个看起来像这样的函数 func test closure gt let localClosure closure localClosure 这只是一个例子 并不能完全反映我遇到的问题 显然在这里我可以直接打
  • 为什么 Go 中无法将 [Size]byte 转换为字符串?

    我有一个大小字节数组 是我做完之后得到的md5 Sum data byte testing var pass string var b 16 byte b md5 Sum data pass string b 错误 cannot conve
  • Xcode 在 Swift 2.2 和 Swift 3.0 之间切换

    自从我下载了新的 Xcode 并转换 更新了我的语法以来 Xcode 一直在上述 Swift 版本之间随机切换 我在终端中运行了 swift version 它确认 目前 我正在运行 Swift 2 2 我看到这个问题 Swift 编译器混
  • Linux 中的 Swift arc4random_uniform(max)

    我在 Ubuntu 中使用 Swift 收到一条错误消息 指出 arc4random 是一个无法解析的标识符 有关此已知错误的更多信息here https bugs swift org browse SR 685 基本上 该功能仅存在于 B
  • 确定非空列表条目是否“连续”的 Pythonic 方法

    我正在寻找一种方法来轻松确定列表中所有非 None 项目是否出现在单个连续切片中 我将使用整数作为非 None 项目的示例 例如 列表 None None 1 2 3 None None 满足我对连续整数条目的要求 相比之下 1 2 Non
  • Go 中的切片分块

    我有一个切片 其中包含约 210 万条日志字符串 我想创建一个切片切片 其中字符串尽可能均匀分布 这是我到目前为止所拥有的 logs is a slice with 2 1 million strings in it var divided
  • 如何在 dplyr 中使用切片来保留 R 中具有 NA 值的行

    我有以下数据集 我想知道每个组的最小单词 如果没有最小单词 它是 NA 我仍然想显示它 df data frame key c A A B B C word c 1 2 3 5 NA df gt group by key gt slice
  • 操作按钮未出现在通知 iOS 10 中

    我在我的应用程序中使用本地推送通知 在 iOS 10 中为通知添加操作按钮时 它不会出现在通知下方 通知正在显示 但通知底部缺少操作按钮 下面给出了 appdelegate 代码 import UIKit import CoreData i
  • 在 Go 中生成随机、固定长度的字节数组

    我有一个字节数组 固定长度为4 token make byte 4 我需要将每个字节设置为随机字节 我怎样才能以最有效的方式做到这一点 这math rand就我而言 方法不提供随机字节函数 也许有一种内置的方法 或者我应该生成一个随机字符串
  • Swift 错误:无法从 AST 上下文获取模块“My_App”

    我正在使用 Swift 3 Xcode 8 1 CocoaPods 1 1 1 运行后pod update 每次我尝试使用 Xcode 的 lldb 控制台时 它都会打印错误 例如 po self输出 共享 Swift 状态My App已出
  • 如何在 Safari 上打开本地 html 文件?

    我想打开本地 html 文件Safari集成到我的Swift 3应用 我知道如何使用网址来做到这一点 这是我用来执行此操作的代码 let encodedString url addingPercentEncoding withAllowed
  • Swift 3 中数组的 indexOf(_:) 方法的替换

    在我的项目 用 Swift 3 编写 中 我想使用从数组中检索元素的索引indexOf 方法 存在于 Swift 2 2 中 但我找不到任何替代方法 Swift 3 中是否有任何好的替代方法或类似的方法 Update 我忘记提及我想在自定义

随机推荐