当前位置: 首页 > 面试题库 >

在Swift中匹配模式元组时,如何解开Optional?

顾鸣
2023-03-14
问题内容

在Swift中,有一个通用的if let模式可以用来解开可选项:

if let value = optional {
    print("value is now unwrapped: \(value)")
}

我目前正在执行这种模式匹配,但是在切换情况下使用元组,其中两个参数都是可选的:

//url is optional here
switch (year, url) {
    case (1990...2015, let unwrappedUrl):
        print("Current year is \(year), go to: \(unwrappedUrl)")
}

但是,此打印:

"Current year is 2000, go to Optional(www.google.com)"

有没有一种方法可以使我的选配和模式匹配不为零而展开?目前,我的解决方法是:

switch (year, url) {
    case (1990...2015, let unwrappedUrl) where unwrappedUrl != nil:
        print("Current year is \(year), go to: \(unwrappedUrl!)")
}

问题答案:

您可以使用以下x?模式:

case (1990...2015, let unwrappedUrl?):
    print("Current year is \(year), go to: \(unwrappedUrl)")

x?只是的快捷方式.some(x),因此等效于

case (1990...2015, let .some(unwrappedUrl)):
    print("Current year is \(year), go to: \(unwrappedUrl)")


 类似资料:
  • 问题内容: 想知道是否有一种方法可以在Swift中执行以下操作。 我知道我还有其他方法可以使这个人为的示例工作,例如是否使用开关,而是使用开关,但是我正在寻找一种解决方案,具体涉及将开关模式匹配到阵列。谢谢! 问题答案: 您可以定义一个自定义模式匹配运算符,该运算符 将一个数组作为“模式”和一个值: 类似的运算符已经存在,例如间隔:

  • 本文向大家介绍Swift中switch语句区间和元组模式匹配,包括了Swift中switch语句区间和元组模式匹配的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,下面一段代码给大家介绍了switch语句区间和元组模式匹配,具体内容如下所示: 以上所述是小编给大家介绍的Swift中switch语句区间和元组模式匹配,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此

  • 我在应用程序中有一个编辑文本字段,用户可以手动插入时间,我想匹配适当的日期模式,如用户可以输入这种格式的时间,只有当它不是在给定的格式,然后它显示错误。我如何才能使这个功能的模式匹配器。我不知道如何实现这个功能。有人请让我知道如何才能实现这个功能,任何帮助都将不胜感激。 谢谢

  • 问题内容: 最近,我看到了Apple的WWDC 2015主题演讲。我也看了一些文档,但是找不到“如果…中的模式匹配”部分,即它们在其中一张幻灯片上的书写方式。(来自Apple Events的 68分钟00秒视频) 你知道这是什么意思吗?还是语法? 问题答案: 它真正的意思是,if语句现在已经支持模式匹配,就像switch语句一样。例如,以下是使用if / else if / else语句“切换”枚

  • 有可能写这样的东西吗,或者我们必须回到Kotlin中的手动空检查?

  • 我想使用Python的结构模式匹配来区分元组(例如表示一个点)和元组列表。 尽管如此,直截了当的方法并不奏效: 其输出: 而我希望它输出: 在这里,切换case语句的顺序也没有帮助。 使用模式匹配解决此问题的好方法是什么?