1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Julia】引数名をkey, 値をvalueとした辞書を関数呼び出しで使う方法

Last updated at Posted at 2022-05-16

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...))
  1. Juliaではキーワード付き引数にする場合,関数を定義する側でセミコロンの後ろに作る宣言する
  2. 引数名を文字列ではなくSymbol型にする
  3. 呼び出す側もセミコロンの後ろに辞書を書く

これで想定の動作になるはずです.

2022-05-17 追記
@antimon2 さんより,名前付きタプルでも同様のことができると教えていただきました!

辞書じゃなくて名前付きタプル(NamedTuple)にしても良いですよ。(むしろ名前付きタプルの方が辞書より軽いのでオススメ)

f(;a, b) = a + b

params = (a=1, b=2)
println(f(;params...))
# => 3
1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?