関数の定義:キーワード引数

関数を定義する際,キーワード引数を利用すると便利なことがあります.例えば反復法の終了条件として閾値(例えば最大反復回数や許容誤差)を設定することはよくありますが,デフォルトの値を設定しつつも,関数を呼び出すときに自由に変更できると便利です.キーワード引数は,引数の指定を位置ではなく名前でおこないます.以下,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
Yuto Miyatake
Yuto Miyatake
Associate Professor

Applied Mathematics, Numerical Analysis, Computational Uncertain Quantification