Swift:具有多种模式的开关大小写无法绑定到变量

2024-02-07

在官方斯威夫特编程语言 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/doc/uid/TP40014097-CH33-ID428指南中关于 switch case 有这样的说法: “...如果 case 包含多个与控制表达式匹配的模式,则这些模式都不能包含常量或变量绑定。”

包含多个模式是什么意思?


这意味着具有多种模式的 case 标签不能声明变量。

这是允许的:

let somePoint = (1, 1)
switch somePoint {
// Case with multiple patterns without binding
case (0, _),
     (_, 0):
    println("(\(somePoint.0), \(somePoint.1)) is on an axis")
default:
    println("(\(somePoint.0), \(somePoint.1)) is not of an axis")
}

这也是允许的:

let somePoint = (1, 1)
switch somePoint {
// Case with single patterns with binding
case (0, let y):
    println("(0, \(y)) is on an axis")
case (let x, 0):
    println("(\(x), 0) is on an axis")
default:
    println("(\(somePoint.0), \(somePoint.1)) is not of an axis")
}

但是,这是禁止的:

let somePoint = (1, 1)
switch somePoint {
// Case with multiple patterns that have bindings
case (0, let y),
     (let x, 0):
    println("(\(x), \(y)) is on an axis")
default:
    println("(\(somePoint.0), \(somePoint.1)) is not of an axis")
}

上面会产生一个错误:

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

Swift:具有多种模式的开关大小写无法绑定到变量 的相关文章

  • 无法在 xcode 8 beta 6 上编译 AWS CustomIdentityProvider

    我在 iOS 应用程序中使用 Amazon Cognito 和 Facebook 登录 直到 beta 5 为止此代码从这个SO线程 https stackoverflow com questions 37597388 aws cognit
  • Swift PageControl 当前页面上更大的点

    我试图将当前页面的点缩放为大于未 选择 的点 我正在使用滚动视图委托来确定哪个页面是当前的 目前 点的大小没有变化 我将如何实现这一目标 func scrollViewDidEndDecelerating scrollView UIScro
  • 使用未声明的类型“对象”

    这太奇怪了 通常我可以理解未声明的类 但这是声称 Object 类本身未声明 NSObject 可以工作 但我的项目设置方式我需要它是一个纯 Swift 对象 我的类标题如下所示 import UIKit import Foundation
  • didRegisterForRemoteNotificationsWithDeviceToken 停止被调用 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在测试我的应用程序是否使用 Push Notifs 一整天都好好的 突然就不行了 设置完全没有变化 经过更多调试后 我发现该函
  • C / Objective C 中的 switch 语句

    我是 Objective C 的新手 但根据我对 switch 语句的了解 以下代码不应该打印任何内容 因为对我来说 似乎应该存在编译错误 但是打印了 2 我不懂为什么 有人可以解释一下吗 void test int myVar 2 swi
  • 从钥匙串保存和加载 |斯威夫特[重复]

    这个问题在这里已经有答案了 如何简单地将字符串存储在钥匙串中并在需要时加载 有几种SO解决方案 主要参考Git repo 但我需要最新 Swift 上最小和最简单的解决方案 当然 我不想添加 git 框架来简单地在我的项目中存储密码 有类似
  • 当我启动项目时没有 viewcontroller.swift 文件 [重复]

    这个问题在这里已经有答案了 我尝试启动该项目并使用视图控制器 但我没有看到它 仅appdelegate和scenedelegate和contentview 下面的代码应该添加到视图控制器中 但我不知道添加到哪里 它不断给我一条错误消息 指出
  • 将 NSDate 转换为 SWIFT 中具有特定时区的字符串

    在我的核心数据库中 我有一个带有 NSDate 属性的 新闻 实体 我的应用程序遍布全球 新闻已发布2015 09 04 22 15 54 0000法国时间 GMT 2 为了保存日期 我将其转换为 UTC 格式 let mydateForm
  • SwiftUI NavigationView 看不到图像

    我有一个代码并制作 NavigationLink 按钮 我编写文本和图像 但我的图像看不到 请帮助我 VStack Image Coachs resizable aspectRatio contentMode fill frame widt
  • 如何过滤掉数组的数组

    您好 我有一个包含多个值的数组 我想尝试过滤掉搜索栏的索引 英语术语的一个例子是这样的 给我名称 Name2 的索引 并通过检查每个索引的第一个值中的所有字符串来执行此操作 Code Multiple Errors var received
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • CNContact 添加新的联系人问题

    我在通过以下方式添加联系人时遇到问题联系框架 我使用的是装有 iOS 12 1 2 的 iPhone 5s 设备 我添加联系人的代码如下 let saveRequest CNSaveRequest saveRequest add self
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 如何在 Swift 中使用 substringToIndex? [复制]

    这个问题在这里已经有答案了 我在这一行收到编译器错误 UIDevice currentDevice identifierForVendor UUIDString substringToIndex 8 类型 String Index 不符合协
  • iOS Swift 检测键盘事件

    我能以某种方式检测来自 iOS 键盘的事件吗 我想检测此类事件UIViewController哪个没有UITextField或任何此类物体 我只有四个圆圈UIView我想在按下键盘上的按钮时将它们涂成不同的颜色 您没有任何对象可以从键盘获取
  • 如何在 Swift 中使用 CGFloat?

    var posinonY Float Float y Float pipeDown size height Float verticalPipeGap pipeDown position CGPointMake 0 0 Float posi
  • Swift -boundingBox 导致 EXC_BAD_ACCESS (代码 = 1)

    我正在使用 SceneKit 来显示文本节点 这是我的代码 foo swift extension SCNNode func getNodeSize gt width Float height Float let min max bound
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • 如何在 Swift 语言中传递错误指针?

    我试图在 swift 中传递错误指针 但无法这样做 编译器抱怨 NSError 无法转换为 NSErrorPointer var error NSError NSError var results context executeFetchR
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self

随机推荐

  • C 中管道命令的问题

    我正在尝试用 C 语言为 Unix 创建一个简单的 shell 我已经能够完成所有命令的解析和执行 但我遇到了管道问题 我认为问题在于我没有连接到正确的管道来输入第二个命令 例如 如果我输入 ls wc 它会在 wc 命令之后暂停 我认为这
  • AndroidJUnit4.class + org.junit.Assume.assumeTrue = AsclusionViolatedException

    我已经成功地将我的 Android 项目转换为 JUnit4 当然我想要这样做的主要原因是不起作用 如果有人在这里有想法 我会很乐意提供帮助 我试图解决的问题是 如果构建未指向登台服务器 我想自动跳过某些测试 我已经设置了这个BUILD T
  • 错误未定义对“std::__ndk1::locale::~locale()”的引用

    我在使用编译代码时遇到问题适用于 Android 的提升 https github com moritz wundke Boost for Android使用 Android Studio ndk 我正在使用 boost 中的 libboo
  • 如何读取和更改 xml 树枝中的 标签和

    我是 xml twig 的新手 如何阅读和更改 and 我如何修改这个标签 因为我不知道如何在 xml Twig 中读取和更改这个标签 我的输入
  • 未找到 Html 帮助程序扩展

    我正在使用 ASP net MVC 的发行版 并且似乎经常遇到此错误 System Web Mvc HtmlHelper does not contain a definition for RenderPartial and no exte
  • scp 失败并显示“协议错误:文件名与请求不匹配”

    我有一个使用 SCP 从 AWS 上的远程 Linux 主机提取文件的脚本 每晚运行相同的代码大约 6 个月没有出现问题后 今天开始失败protocol error filename does not match request 我在下面一
  • 无法在 Websphere 8 上查找远程 EJB

    我已经部署了一个具有本地和远程接口的 EJB 部署后我可以正常查找本地 EJB 但我无法从 Java SE 客户端处理远程 EJB代码很简单 Local DemoFacade class Remote DemoFacadeRemote cl
  • ASP.NET 连接已重置

    我有一些代码从 SQL DB 中提取数据 然后循环遍历记录以生成字符串 该字符串最终将写入文本文件 该代码在我的本地 VS 上运行良好 但在实时服务器上 大约一分半钟后 我收到 未收到数据 错误 chrome 该代码在循环数据表的过程中停止
  • 将页面加载设置为黑色而不是白色背景?

    网站链接 http www ideagang co home php http www ideagang co home php 从一页点击到另一页时是否可以将背景设置为黑色 现在 网站以黑色背景完美加载 只是当我从一个页面导航到另一个页面
  • 如何从 Vista/7 可执行文件中提取完整图标?

    如果我有一个 Vista ico 文件 其中包含 16x16 32x32 256x256 等版本的图标 我只需执行以下操作即可成功将其加载为 NET 图标 Icon myIcon new Icon C MyIcon ico 然后我可以访问图
  • Rails 回调未执行

    在我的一生中 我试图找出为什么我的回调没有被执行sometimes 你没听错有时因为大多数时候它都是开箱即用的 我所拥有的只是两个模型之间的父 子关系 创建子记录后我所做的一切after create回调是更新 累积父字段中的所有子金额以避
  • 通信链路故障,Spring Boot + MySql +Docker + Hibernate

    我正在使用 Spring Boot Hibernate 和 MySql 运行应用程序时 它运行良好 符合预期 但是 在制作 docker compose 文件并使用 mysql docker 映像运行应用程序 docker 映像时 它会出现
  • 如何使用空手道实现基本身份验证?

    我在Karate Demo中看到了有关Oauth 2的详细信息 您还能提供如何实现Basic Auth吗 https i stack imgur com 3DWyF png 是的 这个 JS 函数就是你所需要的 basic auth js
  • 如何用C#获取html页面源码

    我想将完整的网页 asp 保存在本地驱动器中 htm from url https www digikala com Search Category Motherboard Category Electronic Devices Categ
  • 指定泛型集合中重写方法的类型提示

    我定义了一个抽象基类BaseRepository充当具有指定超类型的项目的集合Foo 中的便利类方法BaseRepository被注释 类型暗示可以与类型的对象一起使用Foo 这是一个最小的例子 from abc import ABCMet
  • 将多个txt文件加载到单个数据框中并将名称保留为R中的列

    我是 R 新手 我正在尝试将 100 个左右的 txt 文件 包含名称 频率和性别三列 加载到单个数据框中 这些文件的名称均为 yob1990 txt 等 我可以将所有文件放入 R 中 但我不知道如何添加仅包含年份的列 有人可以帮忙吗 我会
  • 从 PHP 命名空间内定义全局函数

    Is it possible从 PHP 命名空间内 在具有名称空间 http php net manual en language namespaces definition php宣言 如果是这样 怎么办
  • connectionDidFinishLoading - 如何强制更新 UIView?

    我可以从互联网下载 ZIP 文件 后处理在connectionDidFinishLoading 中完成 并且工作正常 但没有更新UIView 元素 例如 我设置 statusUpdate text Uncompressing file 但该
  • 意图 putExtra ArrayList

    有谁知道如何添加ArrayList
  • Swift:具有多种模式的开关大小写无法绑定到变量

    在官方斯威夫特编程语言 https developer apple com library ios documentation Swift Conceptual Swift Programming Language Statements h