美文网首页
swift 模式匹配的各种写法

swift 模式匹配的各种写法

作者: 王家薪 | 来源:发表于2018-06-15 15:52 被阅读15次
let str: Any? = "123"

switch str {
case _: print("无论如何都匹配的上")
default:break
}

if case nil = str {
    print("如果str为nil 则匹配成功")
}

// 匹配optional, 注意: 这里是不为nil匹配成功, 为nil匹配失败, 可以单独使用nil来匹配空值
switch str {
case _?:
    print("如果str不为nil 则匹配成功")
default:break
}

// 匹配 optional 并赋值, 如果 str 不为nil, a = str!
switch str {
case let a?:
    print("如果str 不为nil 匹配成功 a 是 Any类型的")
default:break
}

// 不同于常规的 if let 这里的 a 仍然是可选值
if case let a = str {
    print("把str匹配给a,必然匹配成功 ")
}

// 类型匹配
switch str {
case _ as Int: print("str 是 Int 类型的吗?")
default:break
}

// 匹配并转换 如果匹配成功 a 是String类型的
if case let a as String = str {
    print("str 是string 类型的")
}

// 匹配值 因为swift不会隐式转换类型 所以想要匹配成功需要显示转换
switch str as? String {
case "str"?: print("值相同 匹配成功")
default:break
}

// is 只负责判断类型 在switch中我尝试接受is的返回值 但是失败了 可能编译器觉得: 这完全没必要 因为即便接收返回值, 这个返回值将永远是 true 因为false不会被匹配
switch str {
case is String:
    print("is 匹配")
default:break
}

// 如果用if case 就能得到返回值 但是不会判断`s is Int`的结果
if case let a = str is Int {
    print("即便是Int 也能匹配成功\(a)")
}

// 范围匹配
let index:Int = 10
switch index {
case 10:print("没什么好说的 正常操作")
default: break
}

switch index {
case 0..<100:print("范围匹配")
default:break
}

switch index {
case 0,10: print("多个值匹配")
default:break
}

更详细的解释: http://appventure.me/2015/08/20/swift-pattern-matching-in-detail/

相关文章

  • swift 模式匹配的各种写法

    更详细的解释: http://appventure.me/2015/08/20/swift-pattern-mat...

  • ios 经典面试案例 (七)

    Swift有哪些模式匹配? 模式匹配总结: 1.通配符模式(Wildcard Pattern)如果你在 Swift...

  • 在Swift里的自定义模式匹配(译)

    原文地址模式匹配在swift里是随处可见的,虽然switch case是匹配模式最常见的用法,但是Swift有多种...

  • Swift-模式匹配

    模式就是匹配的规则,下面介绍Swift中的模式。 1. 通配符模式 _匹配任何值,_?匹配非nil值。 2. 标识...

  • Swift 模式匹配总结

    Swift 模式匹配总结 基本用法 对枚举的匹配: 在swift中 不需要使用break跳出当前匹配,默认只执行一...

  • Swift中的模式匹配

    模式匹配 模式匹配是 Swift 中非常常见的一种编程模式,使用模式匹配,可以帮助我们写出简明、清晰以及易读的代码...

  • Swift中的模式匹配

    1、模式匹配2、where和模式匹配 1、模式匹配 虽然在Swift中没有内置的正则表达式支持,但是一个和正则表达...

  • swift模式匹配

    一、模式 1、什么是模式? 模式是用于匹配的规则,比如switch的case、捕捉错误的catch、if\gura...

  • Swift 模式匹配

    在 Swift 中,使用 ~= 来表示模式匹配的操作符。如果我们看看 API 的话,可以看到这个操作符有下面几种版...

  • swift 模式匹配

    写swift一时爽,一直写一直爽~~~ 模式匹配 switt中强大的switch case 结合枚举和元祖会有意想...

网友评论

      本文标题:swift 模式匹配的各种写法

      本文链接:https://www.haomeiwen.com/subject/rwjmeftx.html