Search…
匹配

match语句

match语句是if-else的简写方法。 如果输入匹配,将执行第一个匹配分支的语句块,并返回其最后一个表达式。 else分支将在没有其他匹配分支时执行。
1
num := 1
2
match num % 2 == 0 {
3
true { print('The input number is even.') }
4
else { print('The input number is odd.') }
5
}
Copied!
还可以使用match初始化变量,以便根据条件具有不同的值。
1
num := 3
2
s := match num {
3
1 { 'one' }
4
2 { 'two' }
5
else {
6
'many'
7
}
8
}
Copied!
例如:
1
fn even(num int) bool {
2
match num % 2 == 0 {
3
true { print('The input number is even.') }
4
else { print('The input number is odd.') }
5
}
6
}
7
8
fn num_to_str(num int) int {
9
match num {
10
1 { 'one' }
11
2 { 'two' }
12
else {
13
'many'
14
}
15
}
16
}
17
18
fn main() {
19
println(even(14)) // 'The input number is even.'
20
println(even(3)) // 'The input number is odd.'
21
println(num_to_str(1)) // 'one'
22
println(num_to_str(2)) // 'two'
23
println(num_to_str(352)) // 'many'
24
}
Copied!

枚举

还可以使用variant语句将enum值(变量)作为分支进行匹配:
1
enum Animal {
2
cat
3
dog
4
goldfish
5
pig
6
}
7
8
fn makes_miau(a Animal) bool {
9
return match a {
10
.cat { true }
11
else { false }
12
}
13
}
14
15
fn is_land_creature(a Animal) bool {
16
return match a {
17
.cat { true }
18
.dog { true }
19
.pig { true }
20
else {
21
false
22
}
23
}
24
}
25
// OR LIKE THAT
26
fn is_land_creature_alt(a Animal) bool {
27
return match a {
28
.goldfish { false }
29
else {
30
true
31
}
32
}
33
}
34
35
fn main() {
36
my_cat := Animal.cat
37
my_goldfish := Animal.goldfish
38
39
println(makes_miau(my_cat)) // true
40
println(is_land_creature(my_cat)) // true
41
println(is_land_creature(my_goldfish)) // false
42
}
Copied!

练习

1.编写一个V程序,创建一个从1到50的所有偶数数组。 2.编写一个V程序,给定一个数字数组,返回最大值。 3.编写一个V程序来确定颜色(枚举)是红色还是蓝色
Copy link