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