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!

enum

.項目名構文を用いることで、選択肢でenumの値(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 } // enumの`cat`
11
else { false }
12
}
13
}
14
15
fn is_land_creature(a Animal) bool {
16
return match a {
17
.cat { true } // enumの`cat`
18
.dog { true } // enumの`dog`
19
.pig { true } // enumの`pig`
20
else {
21
false
22
}
23
}
24
}
25
26
// 以下の書き方も可能
27
fn is_land_creature_alt(a Animal) bool {
28
return match a {
29
.goldfish { false } // enumの`goldfish`
30
else {
31
true
32
}
33
}
34
}
35
36
fn main() {
37
my_cat := Animal.cat
38
my_goldfish := Animal.goldfish
39
40
println(makes_miau(my_cat)) // true
41
println(is_land_creature(my_cat)) // true
42
println(is_land_creature(my_goldfish)) // false
43
}
Copied!

Exercises

  1. 1.
    1から50までのすべての偶数の配列を作成するVプログラムを書きましょう。
  2. 2.
    数値を持つ配列を渡すと、その中の最大値を返すVプログラムを書きましょう。
  3. 3.
    color(enum)がredかblueかを調べるVプログラムを書きましょう。
Last modified 2yr ago
Copy link