イントロ
JuliaにはPairというデータ構造がある。よく知らなかったのでメモ。
Pair
PairというのはJuliaのコレクションのひとつで、二つのものをまとめるために使われる。
Pair(x, y)
あるいは
x=>y
でPair{typeof(x), typeof(y)}
型のPairオブジェクトが生成される。二つの記法は完全に等価である。
Pair(x, y) == (x=>y) # true
それぞれの変数にはfirst
, second
という名前のfieldに格納されている。
x,y = 1,2
mypair = x=>y
typeof(mypair) # Pair{Int64, Int64}
mypair.first # 1
mypair.second # 2
また、iterationを通じて各変数にアクセスすることもできる。
x,y = 1,2
mypair = x=>y
for v in mypair
println(v)
end
とすれば、1,2が順に表示される。
(しかし、ブロードキャストする際には、1つのペアは1つのscalarとして扱われる)
Pairが関連するあれこれ
Pairを使う場面はたくさんある。関連するデータ構造などをメモっておく。
Dict
Dictを作る際には、
mydict = Dict{String,Int}()
mydict["A"] = 123
などとしてまず空のDictを作ってから要素を追加することもできるが、キーと値のペアを渡すことで作ることもできる
mydict = Dict("A"=>123)
mydict["A"] # 123
Fluxのレイヤーを作るときの入出力サイズ
深層学習フレームワークであるFlux.jlでレイヤーを作るときに
Dense(10=>5)
とかすると思うが、これの10=>5
はPairである。