38-其他地方使用模式 
模式除了可以在 match 表达式中使用外,还可以使用在变量定义(等号左侧是个模式)和 for in 表达式(for 关键字和 in 关键字之间是个模式)中。
但是,并不是所有的模式都能使用在变量定义和 for in 表达式中,只有 irrefutable 的模式才能在这两处被使用,所以只有通配符模式、绑定模式、irrefutable tuple 模式和 irrefutable enum 模式是允许的。
- 变量定义和 - for in表达式中使用通配符模式的例子如下:javascript- main() { let _ = 100 for (_ in 1..5) { println("0") } }- 上例中,变量定义时使用了通配符模式,表示定义了一个没有名字的变量(当然此后也就没办法对其进行访问), - for in表达式中使用了通配符模式,表示不会将- 1..5中的元素与某个变量绑定(当然循环体中就无法访问- 1..5中元素值)。编译执行上述代码,输出结果为:javascript- 0 0 0 0
- 变量定义和 - for in表达式中使用绑定模式的例子如下:javascript- main() { let x = 100 println("x = ${x}") for (i in 1..5) { println(i) } }- 上例中,变量定义中的 - x以及- for in表达式中的- i都是绑定模式。编译执行上述代码,输出结果为:javascript- x = 100 1 2 3 4
- 变量定义和 - for in表达式中使用- irrefutabletuple 模式的例子如下:javascript- main() { let (x, y) = (100, 200) println("x = ${x}") println("y = ${y}") for ((i, j) in [(1, 2), (3, 4), (5, 6)]) { println("Sum = ${i + j}") } }- 上例中,变量定义时使用了 tuple 模式,表示对 - (100, 200)进行解构并分别和- x与- y进行绑定,效果上相当于定义了两个变量- x和- y。- for in表达式中使用了 tuple 模式,表示依次将- [(1, 2), (3, 4), (5, 6)]中的 tuple 类型的元素取出,然后解构并分别和- i与- j进行绑定,循环体中输出- i + j的值。编译执行上述代码,输出结果为:javascript- x = 100 y = 200 Sum = 3 Sum = 7 Sum = 11
- 变量定义和 - for in表达式中使用- irrefutableenum 模式的例子如下:javascript- enum RedColor { Red(Int64) } main() { let Red(red) = Red(0) println("red = ${red}") for (Red(r) in [Red(10), Red(20), Red(30)]) { println("r = ${r}") } }- 上例中,变量定义时使用了 enum 模式,表示对 - Red(0)进行解构并将构造器的参数值(即- 0)与- red进行绑定。- for in表达式中使用了 enum 模式,表示依次将- [Red(10), Red(20), Red(30)]中的元素取出,然后解构并将构造器的参数值与- r进行绑定,循环体中输出- r的值。编译执行上述代码,输出结果为:javascript- red = 0 r = 10 r = 20 r = 30