内蒙古网站优化,大连住房和城乡建设官网,云服务器哪家最便宜,丽水市网站建设38-其他地方使用模式
模式除了可以在 match 表达式中使用外#xff0c;还可以使用在变量定义#xff08;等号左侧是个模式#xff09;和 for in 表达式#xff08;for 关键字和 in 关键字之间是个模式#xff09;中。
但是#xff0c;并不是所有的模式都能使用在变量定…38-其他地方使用模式
模式除了可以在 match 表达式中使用外还可以使用在变量定义等号左侧是个模式和 for in 表达式for 关键字和 in 关键字之间是个模式中。
但是并不是所有的模式都能使用在变量定义和 for in 表达式中只有 irrefutable 的模式才能在这两处被使用所以只有通配符模式、绑定模式、irrefutable tuple 模式和 irrefutable enum 模式是允许的。 变量定义和 for in 表达式中使用通配符模式的例子如下 main() {let _ 100for (_ in 1..5) {println(0)}
}上例中变量定义时使用了通配符模式表示定义了一个没有名字的变量当然此后也就没办法对其进行访问for in 表达式中使用了通配符模式表示不会将 1..5 中的元素与某个变量绑定当然循环体中就无法访问 1..5 中元素值。编译执行上述代码输出结果为 0
0
0
0变量定义和 for in 表达式中使用绑定模式的例子如下 main() {let x 100println(x ${x})for (i in 1..5) {println(i)}
}上例中变量定义中的 x 以及 for in 表达式中的 i 都是绑定模式。编译执行上述代码输出结果为 x 100
1
2
3
4变量定义和 for in 表达式中使用 irrefutable tuple 模式的例子如下 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 的值。编译执行上述代码输出结果为 x 100
y 200
Sum 3
Sum 7
Sum 11变量定义和 for in 表达式中使用 irrefutable enum 模式的例子如下 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 的值。编译执行上述代码输出结果为 red 0
r 10
r 20
r 30