generated at
Nimのコレクション型

固定長のコンテナ
値型。代入するときはコピーされる
配列内の要素は全て同じ型
[] で作る
Nim
var x = [1,2,3,4,5,6,7,8,9] echo x # 自作する場合 type IntArray = array[0..5, int] # 0..5がindexの配列 type IntArray = array[6, int] # 同じ


可変長な配列
要素の追加、削除が可能
ヒープに割り当てられ、GCの対象
よく使うmodule
Nim
var x: seq[int] x = @[1,2,3,4,5,6] # `@`を使う for i, value in @[3, 4, 5]: echo "index: ", $i, ", value:", $value
パフォーマンス


openarray
例えば openarray 型が引数の関数は seq にも array にも使える
procの引数の型にしか指定できない


tables
tablesをimportして使う
他の言語のdictのようなもの
nim
import tables var t = {"a": 1, "b": 2}.toTable


コレクション型に対する操作
foldl, foldr, mapIt,
↓ここに書くべきではない?「関数型」みたいなのつくる?
Nim
echo @[1, 2, 3, 4, 5] .map(proc(x: int): int = x * 2) .filter(proc(x: int): bool = x < 5) .foldl(a + b) # -> 6
Nim
import sequtis echo @[1, 2, 3, 4, 5] .mapIt(it*2) .filterIt(it < 5) .foldl(a + b)