関数の定義:キーワード引数
関数を定義する際,キーワード引数を利用すると便利なことがあります.例えば反復法の終了条件として閾値(例えば最大反復回数や許容誤差)を設定することはよくありますが,デフォルトの値を設定しつつも,関数を呼び出すときに自由に変更できると便利です.キーワード引数は,引数の指定を位置ではなく名前でおこないます.以下,Jiliaにおけるキーワード引数の基本的な使い方を説明します.
例えば,次の関数では y
の値としてデフォルトで 1
が設定されていますが,関数を呼び出すときに,自由に変更することが可能です.
julia> function f(x;y=1)
return x+y
end
f (generic function with 1 method)
julia> f(2)
3
julia> f(2,y=0.1)
2.1
もちろん,型を指定することもできます.
julia> function g(x;y::Int64=1)
return x+y
end
g (generic function with 1 method)
julia> g(2,y=1)
3
julia> g(2,y=0.1)
ERROR: TypeError: in keyword argument y, expected Int64, got Float64
Stacktrace:
[1] (::getfield(Main, Symbol("#kw##g")))(::NamedTuple{(:y,),Tuple{Float64}}, ::typeof(g), ::Int64) at ./none:0
[2] top-level scope at REPL[15]:1
Int64
は 64-bit signed integer type なので,このように小数を代入をしようとするとエラーが起きます.
また,キーワード引数が二つ以上ある場合,どの順番で指定しても問題ありません.
julia> function h(x;y=1,z=2)
return x*y+z
end
h (generic function with 1 method)
julia> h(1,z=3)
4
julia> h(1,z=3,y=2)
5