Swift switch 语句中使用 `let` 时出现编译错误

2024-03-03

在 Swift 中,您可以使用范围运算符获取数组的切片,如下所示:

let list: String[] = ["first", "middle", "last"]
let cdr = list[1..list.endIndex]
assert(cdr == ["middle", "last"])

我正在尝试在递归函数中做同样的事情,该函数需要String[]参数,但没有任何运气:

func last(xs: String[]) -> String? {
    switch xs {
    case let (singleItemList) where singleItemList.endIndex == 1:
        return singleItemList[0]
    case let(multiItemList) where multiItemList.endIndex > 1:
        let cdr: String[] = multiItemList[1..multiItemList.endIndex] // compilation error!
        return last(cdr)
    default:
        return nil // empty list
    }
}


last(["first", "middle", "last"])
last(["last"])
last([])

中间的 case 语句无法编译。它因以下错误而失败:

Playground execution failed: error: <REPL>:14:29: error: could not find an overload for 'subscript' that accepts the supplied arguments
        let cdr: String[] = multiItemList[1..multiItemList.endIndex] // compilation error!
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

难道我做错了什么?是我获取的值的类型let不知何故不是String[]?

我正在尝试提出一个等效的递归lastScala 中的方法(是的,我知道有更简单的方法可以将最后一个元素内置到 Swift 和 Scala):

def last[T](xs: List[T]): T = xs match {
    case List() => throw new Error("last of empty list")
    case List(x) => x
    case y :: ys => last(ys)
}

multiItemList[1..multiItemList.endIndex]不是一个数组。您必须先将其转换为数组。将该行更改为以下内容:

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

Swift switch 语句中使用 `let` 时出现编译错误 的相关文章

  • 数组的扩展,其中元素是可选的

    我有一个数组String like so var myArray String 2 banana nil 31 我还有另一个数组String像这样 var myStringArray String 2 3 我为 Array 编写了一个扩展
  • 领域数据库对象看起来是空的,但实际上不是

    我在用Realm https realm io对于一个小而简单的项目 我正在使用最新版本的框架 昨天从 Github 编译 和当前 AppStore 版本的 Xcode with Swift 2 1 我正在通过 segue 将 Realm
  • 从 Firestore Swift 获取文档 ID

    我正在尝试从中获取文档IDFirestore通过执行这样的查询 func updateStatusInFirestore let orderid saleOrder first Orderid print orderid let setti
  • 从 AVAudioRecorder 获取分贝

    我正在尝试从 AVAudio 录音机获取分贝值 这是我目前的代码 我有一个启动录音机的方法 然后是一个读取分贝值的方法 var recorder AVAudioRecorder 全局定义的记录器 然后在此处使用 func init reco
  • 如何使用存储在 Cocoa Touch 框架中的 Localized.strings?

    我想为 CocoaTouch 框架添加多语言支持 问题 可本地化的字符串我创建的文件仅被使用NSLocalizedString当它是主应用程序及其目标的一部分时 我想将其存储在框架内以将事物分开 我怎样才能使用可本地化的字符串当放置在 Co
  • 具有透明背景的 Swift 模态视图控制器 [重复]

    这个问题在这里已经有答案了 我知道这个话题很受欢迎 但我在编程语言中遇到了一些问题 事实是我仍然不明白我把代码放在哪里 好吧 我就来说说整个案子 我正在尝试制作一个与正常情况稍有不同的模态 Swift 通过单击按钮 ViewControll
  • ExpandableLabel iOS 中的“少看”

    我正在使用第三方库可扩展标签 https github com apploft ExpandableLabel实施一个see more特征 我正在寻找仅快速的解决方案 其中包含标签中的文本而不是按钮中的文本 因此这可以完美地工作 添加库并更
  • Swift - 将图像插入 PDF 不再适用于 iOS 13

    目前正在开发在我的贷款计算器应用程序上导出 PDF 的功能 我有一个预览屏幕 可以在您保存 PDF 之前显示它 预览屏幕由带有 html 的 webView 组成 其中包含占位符 我能够成功地将图像插入到正确的占位符上 并将其显示在 PDF
  • 在 iOS 上使用 HEVC 编码器输出视频尺寸巨大

    我有一个项目 目前使用 H 264 编码器在 iOS 上录制视频 我想尝试在 iOS 11 中使用新的 HEVC 编码器来减小文件大小 但发现使用 HEVC 编码器会导致文件大小急剧膨胀 GitHub 上的一个项目显示了该问题 它使用 H
  • skView.ignoreSiblingOrder 在 swift 中的重要性/效率?

    这样做有多重要 高效skView ignoreSiblingOrder true初始化场景时 现在 我将其设置为 true 但由于某种原因 当我从 MainMenu 场景启动 GameScene 时 它 会在我的角色之前加载背景 即使背景的
  • 在 Firebase 中构建聊天应用的数据

    我正在关注 Firebase 指南结构化数据 https firebase google com docs database ios structure data flatten data structures对于聊天应用程序 他们建议的结
  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • 使用prepareForSegue传递数据

    我试图将数据从viewController 1传递到viewController2 我有2个按钮和1个segue 因此有一个segue标识符 这2个按钮 按下时每个按钮应显示 1个标签用于显示标题 1个textView用于显示定义 我很难显
  • 来自索引范围 Swift 的新数组

    我怎样才能做这样的事情 从数组中取出前 n 个元素 newNumbers numbers 0 n 目前出现以下错误 error could not find an overload for subscript that accepts th
  • UITesting、XCTest 当前 ViewController 类

    简单的问题 我有一个按钮可以执行到下一个视图控制器的操作 我想写 UI XCTest 来告诉我它是否打开了我想要的视图控制器 UI 测试框架无法访问您的应用程序代码 这使得无法对实例进行类断言 你不能够directly告诉屏幕上的控制器的类
  • iOS Swift 在后台下载大量小文件

    在我的应用程序中 我需要下载具有以下要求的文件 下载大量 例如 3000 个 小 PNG 文件 例如 5KB 逐个 如果应用程序在后台继续下载 如果图像下载失败 通常是因为互联网连接丢失 请等待 X 秒然后重试 如果失败Y次 则认为下载失败
  • 在 Swift 中以编程方式为 iOS 制作带有名字首字母的图像,例如 Gmail

    我需要在 UITableView 中显示与其姓名相对应的每个用户的个人资料图片 在下载图像之前 我需要显示一张带有他名字的第一个字母的图像 就像在 GMail 应用程序中一样 如何在 Swift for iOS 中以编程方式执行此操作 不需
  • UILabel 中的文本未垂直居中

    我使用以下代码创建了一个标签 func setupValueLabel valueLabel numberOfLines 1 valueLabel font UIFont name Avenir Black size 50 valueLab
  • iOS Swift 和 reloadRowsAtIndexPaths 编译错误

    我与 xCode Swift 陷入僵局并刷新 UITableView 的单行 这条线有效 self tableView reloadData 而这条线没有 self tableView reloadRowsAtIndexPaths curr
  • 如何观察UserDefaults的变化?

    我有一个 ObservedObject在我看来 struct HomeView View ObservedObject var station Station var body some View Text self station sta

随机推荐

  • Python:如何使用 BeautifulSoup 模拟点击

    我不想使用 selenium 因为我不想打开任何浏览器 该按钮会触发 Javascript 方法来更改页面中的某些内容 我想模拟按钮单击 以便我可以从中获取 输出 示例 不是按钮实际执行的操作 我输入一个名字 例如 John 按下按钮 它会
  • 如何在 Action 类之外将错误消息从 Struts2 发布到 HTML

    我有一个注册程序 当我在数据库中插入一条记录时 我将实例化一个类并调用该方法insert 当我插入相同的记录时 当然会出现重复数据错误和大量错误消息 我想捕捉它try and catch 我能做到 但是 我不知道如何将消息显示到 JSP 据
  • 提高 jQuery 模板性能

    Update 显然 jQuery 模板可以被编译 并且它有助于提高模板的性能if 语句 shown here http jsperf com complex template vs concat 4 但如图所示here http jsper
  • MFC> 将对话框连接到对话框类

    我在现有的资源文件中定义了一个新对话框及其控件 我还创建了一个新文件 它将处理从此对话框生成的事件 但我不确定如何连接这两者 是声明enum IDD IDD NEW DIALOG 连接两者所需的一切 或者我们应该添加一些其他声明 在 MFC
  • 网络调用 /.well-known/openid-configuration/ 和 /.well-known/openid-configuration/jwks

    I have 身份服务器4 具有 OpenId Connect 和混合流的 Mvc 应用程序 WebApi应用程序 假设用户已经获得带有 id token 和访问令牌的 cookie 然后他从 mvc 应用程序调用一个操作 var clie
  • 从列表列表创建 pandas 数据框,但有不同的分隔符

    我有一个列表列表 1 Toy Story 1995 Animation Children s Comedy 2 Jumanji 1995 Adventure Children s Fantasy 3 Grumpier Old Men 199
  • h5py 不遵守分块规范?

    问题 我有现有的 netCDF4 文件 大约 5000 个 通常形状为 96x3712x3712 数据点 float32 这些文件的第一维是时间 每天一个文件 第二维和第三维是空间维 目前 在第一维上制作切片 即使是部分切片 会花费大量时间
  • Angular RouterLink queryParamsHandling 处理可选参数

    是否有一种干净的方法可以将当前可选的 queryParams 与模板中链接上的附加可选 queryParam 合并 当前网址 search brand Trek 所需的转到链接 search brand Trek start 1 start
  • 获取Web层之外的当前Principal

    我有以下 ntier 应用程序 MVC gt 服务 gt 存储库 gt 域 我正在使用表单身份验证 在 MVC 层之外使用 Thread CurrentPrincipal 来获取应用程序当前登录的用户是否安全 或者我应该使用 HttpCon
  • 使用 tampermonkey 获取与页面相关的所有请求的标头

    我正在尝试编写一个 tampermonkey 脚本 该脚本将 document location 和标题收集在字典中 谷歌搜索了一下 发现我应该使用某种全局变量 但它没有按我想要的方式工作 这是脚本 UserScript name My F
  • 性能测量的建模分布

    您如何对重复的现实生活性能测量的分布进行数学建模 现实生活 意味着您不仅仅是循环有问题的代码 而且它只是在典型用户场景中运行的大型应用程序中的一个简短片段 我的经验表明 平均执行时间通常会出现峰值 可以使用高斯分布对其进行充分建模 此外 还
  • 在 sed 表达式中转义替换字符串中的“\”字符

    我正在尝试获取一行文本 例如 13 Check for orphaned Path entries 并将其更改为 我希望 bash 颜色代码对输出进行着色 而不是显示在屏幕上 033 32m 033 0m Check for orphane
  • azure devops 管道 CopyFiles@2 任务从代理 A 复制文件,但 DownloadBuildArtifacts@0 将文件下载到代理 B

    我对来自托管代理的复制文件进行了有线行为 然后将它们下载回同一代理 看起来它从代理 A 复制文件 但相同的管道将它们下载回代理 B with 在另一台机器上执行另一个不相关的构建工作 Upload from ios docker 142 l
  • Spring security:添加“成功登录事件侦听器”

    我是 Spring Security 的新手 如何添加在用户成功登录时调用的事件侦听器 另外 我需要在此侦听器中获取某种唯一的会话 ID 该 ID 应该可以进一步使用 我需要这个 ID 来与另一台服务器同步 您需要定义一个 Spring B
  • Android Studio 新项目文件大小太大

    我刚刚在 Android Studio 2 2 3 中创建了一个新的 android 项目 只有一个空的 Activity 但它仍然在设备上使用了 4 11 MB 我认为这个空间很大 因为它确实包含一个空的 Activity 为什么它占用这
  • 如何禁用 Firefox 开发者版中新的 JSON 查看器/阅读器?

    火狐开发者版 44现在有一个内置的 JSON 查看器 https developer mozilla org en US docs Tools JSON viewer 这是一个很好的举动 但我非常喜欢我使用的第三方 JSON 查看器的可读性
  • 如何使用 PostSharp 属性注入属性?

    如何编写 PostSharp 方面以将属性应用于类 我正在考虑的场景是一个 WCF 实体 或域对象 需要用DataContract属性 它还应该有一个Namespace财产 像这样 using System Runtime Serializ
  • 使用 PHPUnit 测试 PHP 标头

    我正在尝试使用 PHPunit 来测试输出一些自定义标头的类 问题是在我的机器上
  • Android Studio:根据构建类型切换 URL? (用于调试/发布中的测试)

    我一直在阅读一些有关变体和构建类型的内容 我不知道我是否理解正确 但我想存储一个用于 locahost 测试 的 URL 和一个用于生产的 URL 互联网上的实时站点 我需要根据哪种构建类型来切换它们 这是正确的方法吗 或者还有其他选择吗
  • Swift switch 语句中使用 `let` 时出现编译错误

    在 Swift 中 您可以使用范围运算符获取数组的切片 如下所示 let list String first middle last let cdr list 1 list endIndex assert cdr middle last 我