Nimのコレクション型
固定長のコンテナ
値型。代入するときはコピーされる
配列内の要素は全て同じ型
[]で作る
code:Nim
echo x
# 自作する場合
type IntArray = array0..5, int # 0..5がindexの配列 type IntArray = array6, int # 同じ 可変長な配列
要素の追加、削除が可能
ヒープに割り当てられ、GCの対象
よく使うmodule
code:Nim
echo "index: ", $i, ", value:", $value
パフォーマンス
openarray
例えばopenarray型が引数の関数はseqにもarrayにも使える
procの引数の型にしか指定できない
tables
他の言語のdictのようなもの
code:nim
import tables
var t = {"a": 1, "b": 2}.toTable
コレクション型に対する操作
foldl, foldr, mapIt,
↓ここに書くべきではない?「関数型」みたいなのつくる?
code:Nim
.map(proc(x: int): int = x * 2)
.filter(proc(x: int): bool = x < 5)
.foldl(a + b)
# -> 6
code:Nim
import sequtis
.mapIt(it*2)
.filterIt(it < 5)
.foldl(a + b)