Search…
配列
配列(array)は、メモリ上の連続した位置に保存された項目のコレクションです。配列は、型が同じであるオブジェクトのグループを保存するよう設計された、集約的なデータ構造であり、オブジェクトのシーケンスを保存したりアクセスしたりする場合に最も効率の高いデータ構造です。

配列を宣言する方法

要素の型がintegerの配列を1つ作成する:
1
mut ages := [18, 25, 37]
2
3
println(ages)
Copied!
上の出力結果:
1
[18, 25, 37]
Copied!
要素の型がstringaの配列を1つ作成する:
1
mut users := ['vbrazo', 'donnisnoni95', 'Delta456']
2
3
println(users)
Copied!
上の出力結果:
1
['vbrazo', 'donnisnoni95', 'Delta456']
Copied!
注意: どの要素もすべて同じ型でなければなりません。以下はコンパイルされません。
1
mut users := ['vbrazo', 'donnisnoni95', 'Delta456', 0]
Copied!
上の出力結果:
1
~/main.v:2:43: bad array element type `int` instead of `string`
Copied!

空の配列を作成する

宣言で[]に続けてデータ型を書くことで、空の配列を1つ作成できます。
1
mut names := []string
2
mut numbers := []int
Copied!

配列の要素にアクセスする

1
mut users := ['vbrazo', 'donnisnoni95', 'Delta456']
2
3
println(users[0])
4
println(users[2])
5
println(users[1])
Copied!
上の出力結果:
1
vbrazo
2
Delta456
3
donnisnoni95
Copied!

配列の末尾に値を追加する

<<は、配列の末尾に値をひとつ追加する演算子です。
1
mut ages := [18]
2
ages << 47
3
4
println(ages)
Copied!
上の出力結果:
1
[18, 47]
Copied!
値の代わりに配列を追加することもできます。
1
mut ages := [18]
2
ages << [47, 49]
3
4
println(ages)
Copied!
上の出力結果
1
[18, 47, 49]
Copied!

配列の長さ

.lenメソッドは配列の長さ(つまり要素の数)を返します。
1
mut names := ['Thiago', 'John']
2
3
println(names.len)
Copied!
上の出力結果
1
2
Copied!

in演算子

inは、要素が配列にあるかどうかをチェックします。
1
mut names := ['Thiago', 'Alex', 'Joe']
2
3
println('Vitor' in names)
4
println('Thiago' in names)
Copied!
上の出力結果
1
false
2
true
Copied!

配列をスライスする

Vでは配列を簡単にスライス(切り出し)できます。slice ()メソッドを呼ばなくても、Vのデフォルトのスライシング機能だけで配列をスライスできます。 構文は配列[開始値..終了値]のようになります。
1
animals := ['lion', 'goose', 'chicken', 'turkey', 'tiger']
2
poultry := animals[1..4]
3
println(poultry) // ["goose", "chicken", "turkey"]
Copied!
スライスをインデックスの冒頭から開始したい場合、開始値に0を置かずに配列[..終了値]と書くことも、終了値に-1を置かずに配列[開始値..]と書くこともできます。
1
x := ['h', 'e', 'l', 'l', 'o']
2
y := x[..x.len-1]
3
z := x[1..]
4
println(y) // ['h', 'e', 'l', 'l']
5
println(z) // ['e', 'l', 'l', 'o']
Copied!

演習

  1. 1.
    要素をいくつか渡すと配列に保存して出力するVプログラムを書きましょう。
  2. 2.
    配列のn番目の値を読み取って逆順で表示するVプログラムを書きましょう。
  3. 3.
    配列のすべての要素の合計を求めるVプログラムを書きましょう。
  4. 4.
    ある配列の要素を別の配列にコピーするVプログラムを書きましょう。
  5. 5.
    配列の中で重複している要素の個数を数えるVプログラムを書きましょう。