Pythonでは関数を呼び出す時,引数名をキー,実引数を値とする辞書を使うことができます.
Juliaで同様のことをやろうとして躓いたのでメモしておきます.
Pythonでは,
def f(a, b):
return a + b
params = {"a": 1, "b": 2}
print(f(**params))
>>> 3
で辞書を使えます.
Juliaで同様のことをやろうと思った時,直感的に翻訳するとこうなると思います.
f(a, b) = a + b
params = Dict("a" => 1, "b" => 2)
println(f(params...))
しかし,これではいくつか構文エラーが発生します.
想定の動作をさせるには以下のように記述します.
f(;a, b) = a + b
params = Dict(:a => 1, :b => 2)
println(f(;params...))
- Juliaではキーワード付き引数にする場合,関数を定義する側でセミコロンの後ろに作る宣言する
- 引数名を文字列ではなくSymbol型にする
- 呼び出す側もセミコロンの後ろに辞書を書く
これで想定の動作になるはずです.
2022-05-17 追記
@antimon2 さんより,名前付きタプルでも同様のことができると教えていただきました!
辞書じゃなくて名前付きタプル(NamedTuple)にしても良いですよ。(むしろ名前付きタプルの方が辞書より軽いのでオススメ)
f(;a, b) = a + b
params = (a=1, b=2)
println(f(;params...))
# => 3