Juliaでは,関数の実引数(呼び出し時の引数)と仮引数(関数定義時の引数)にはいくつかの指定方法がある。以下に主な種類とその使い方を説明する。
1. 位置引数
位置によって値を渡す方法で,一番基本的な指定方法である。
function greet(name, age)
println("Hello, $name! You are $age years old.")
end
greet("Alice", 30) # 実引数は位置で対応する:name = "Alice", age = 30
2. デフォルト引数
仮引数にデフォルト値を設定できる。実引数を渡さなかった場合,デフォルト値が使用される。
function greet(name, age=20)
println("Hello, $name! You are $age years old.")
end
greet("Bob") # 実引数を1つだけ渡す:name = "Bob", age = 20(デフォルト値)
greet("Charlie", 25) # 実引数を2つ渡す:name = "Charlie", age = 25
3. キーワード引数
名前で引数を渡す方法である。関数定義時に ; を使って定義する。
function greet(; name="Anonymous", age=0)
println("Hello, $name! You are $age years old.")
end
greet() # name = "Anonymous", age = 0(デフォルト値)
greet(name="Diana") # name = "Diana", age = 0(部分的に指定)
greet(name="Eve", age=35) # name = "Eve", age = 35(すべて指定)
キーワード引数を必須にしたい場合はデフォルト値を設定しない。
function required_args(; name, age)
println("Name: $name, Age: $age")
end
required_args(name="Frank", age=40) # すべて必須
4. 可変長引数
仮引数に ... を付けることで,任意の個数の引数を受け取れる。
以下の例では numbers はタプルとして扱われる。
function sum_all(numbers...)
return sum(numbers)
end
println(sum_all(1, 2, 3)) # 出力:6
println(sum_all(10, 20, 30, 40)) # 出力:100
5. 混合引数
位置引数、デフォルト引数,キーワード引数を組み合わせて使うことができる。ただし,ルールがある。
- 位置引数 → デフォルト引数 → キーワード引数 の順に定義する
- キーワード引数は関数呼び出し時に名前で指定する
function greet(name, age=20; greeting="Hello")
println("$greeting, $name! You are $age years old.")
end
greet("Grace") # 出力:Hello, Grace! You are 20 years old.
greet("Hank", 25) # 出力:Hello, Hank! You are 25 years old.
greet("Ivy", 30; greeting="Hi there") # 出力:Hi there, Ivy! You are 30 years old.
6. 無名関数(ラムダ式)の引数
簡易的に書ける無名関数でも引数を指定できる。
f = x -> x^2 # 引数が1個のとき
println(f(4)) # 出力:16
g = (x, y) -> x + y # 引数が2個のとき
println(g(2, 3)) # 出力:5
まとめ
- 位置引数:シンプルでよく使う
- デフォルト引数:一部を省略可能
- キーワード引数:柔軟な指定が必要な場合に便利
- 可変長引数:引数の数が不定の場合に使う
- 無名関数:簡単な関数に使う