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

Swift:在切换情况下针对可选值进行测试

叶展
2023-03-14
问题内容

在斯威夫特,我怎么能写这样的情况,一个开关语句测试值被切换对抗的内容 可选 ,跳过如果可选包含案例nil

这是我想象的样子:

let someValue = 5
let someOptional: Int? = nil

switch someValue {
case someOptional:
    // someOptional is non-nil, and someValue equals the unwrapped contents of someOptional
default:
    // either, someOptional is nil, or someOptional is non-nil but someValue does not equal the unwrapped contents of someOptional
}

如果我只是这样写,编译器会抱怨someOptional没有解包,但是如果我通过添加!到末尾来显式解包,那么我当然会在someOptional包含的任何时间收到运行时错误nil。对我来说,添加?而不是!有意义(我想是基于可选链接的精神),但并不能消除编译器错误(即,实际上并未解开可选)。


问题答案:

可选enum就像这样:

enum Optional<T> : Reflectable, NilLiteralConvertible {
    case None
    case Some(T)

    // ...
}

因此,您可以像往常一样将它们与“关联值”匹配模式进行匹配:

let someValue = 5
let someOptional: Int? = nil

switch someOptional {
case .Some(someValue):
    println("the value is \(someValue)")
case .Some(let val):
    println("the value is \(val)")
default:
    println("nil")
}

如果要从匹配someValue,请使用保护表达式:

switch someValue {
case let val where val == someOptional:
    println(someValue)
default:
    break
}

对于Swift > 2.0

switch someValue {
case let val where val == someOptional:
    print("matched")
default:
    print("didn't match; default")        
}


 类似资料:
  • 问题内容: 很抱歉那个愚蠢的问题。如何在javascript切换大小写语言元素中为案件使用条件?像下面的示例一样,当变量<= 5和> 0 时,大小写应该匹配;但是,我的代码不起作用: 感谢您的任何建议! 问题答案: 这有效: 此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是您的case表达式必须为布尔值。 之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同

  • 问题内容: 在编组到XML文件之前,我需要验证我的JAXB对象。在JAXB 2.0之前,可以使用javax.xml.bind.Validator。但这已被弃用,因此我正在尝试找出执行此操作的正确方法。我熟悉在马歇尔时间进行验证,但就我而言,我只是想知道其是否有效。我想我可以编组到一个临时文件或内存中并扔掉它,但是想知道是否有更优雅的解决方案。 问题答案: 首先,不赞成使用(javadoc)。这个想

  • 本文向大家介绍在什么情况下选择webpack?在什么情况下选择rollup?相关面试题,主要包含被问及在什么情况下选择webpack?在什么情况下选择rollup?时的应答技巧和注意事项,需要的朋友参考一下 非要一句话区分的话 如果是用,如果是用其实界限并不是特别明显。在某些特殊情况下可以互用

  • 我见过类似的问题,比如“如何在纯JavaScript中切换元素的类?”,但是这个问题引用了属性。 我有这样一个复选框: 我如何使它,以便当任何地方在(包括文本)被点击,它切换复选框属性?

  • 问题内容: 我需要在检查的同时将以下更改为- ,以改善圈复杂度。 但是我不确定我将获得什么价值。 问题答案: Java(版本7之前的版本)在switch / case中不支持String。但是您可以通过使用枚举来达到预期的结果。

  • 本文向大家介绍jQuery针对input的class属性写了多个值情况下的选择方法,包括了jQuery针对input的class属性写了多个值情况下的选择方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery针对input的class属性写了多个值情况下的选择方法。分享给大家供大家参考,具体如下: jQuery选择input的class属性写了多个值的情况: 【注】:input中