関数 (2)応用編(書き方例)
◆型指定
# 引数はInt型(整数)を指定、返り値はFloat64(実数)を指定
function comsumption_tax(price::Int)::Float64
tax_rate = 1.08
return tax_rate * price
end
◆型指定(一行表示)
comsumption_tax(price::Int)::Float64 = tax_rate * price
◆可変長引数
■例文1
function summation(v...)
total = 0
for i in v
total += v[i]
end
return total
end
■例文2
function summation2(v::Int...)
total = 0
for i = 1:length(v)
total += v[i]
end
return total
end
◆オプショナル引数
# 引数の初期値を予め設定(下例:v2の初期値を100に設定)
function foptional(v1, v2=100)
total = v1 + v2
return total
end
◆キーワード引数
# 区切り文字に;(セミコロン)を使用(詳細は下部の解説を参照)
function car(length, width; color="white", price=10000)
println("special car:")
println(" lenth x width = ", length, " x ", width)
println(" color = ", color)
println(" price = ", price)
end
◆匿名関数
■例文1
# 引数は1つのみ指定可
price = x -> x * 1.08
■例文2
# 複数行の場合は、begin~endで囲う
nebiki = x -> begin
price = x * 0.9
return price * 1.08
end
解説
(1)型指定
型の指定は必須ではありませんが、指定することも可能です。
引数だけの型指定でも構いませんし、返り値だけの型指定でも構いません。
型が一致しない関数を呼び出すとエラーが発生します。
(2)可変長引数
◆要約
①引数の数を変えて使用することができます。
②設定できる引数は、最後の引数だけです。
③2つ以上の引数を可変長にすることもできません。
④可変長引数に型指定設定できます。
①引数の数を変えて使用することができます。
下図の例では、引数が1つ、2つ、3つの場合です。
引数に設定する値はリスト(実際にはタプル)として取り出しますので、以下のようにループ部分を書くこともできます。
②設定できる引数は、最後の引数だけです。
以下のような書き方はできません。
function summation(v..., x)
...
③2つ以上の引数を可変長にすることもできません。
④可変長引数に型指定設定できます。
可変長引数に型指定をする場合は、以下のように設定します。
function summation(v::Int...)
...
(3)オプショナル引数
◆要約
①引数の初期値を予め設定しておくことができます。
②複数の引数をオプショナルに指定することができます。
③オプショナル引数は引数の末尾にまとめて書きます。
①引数の初期値を予め設定しておくことができます。
引数の値が省略された場合はこの初期値が適用されます。
②複数の引数をオプショナルに指定することができます。
③オプショナル引数は引数の末尾にまとめて書きます。
以下のような書き方はできません。
function foptional(v2=10, v1)
...
(4)キーワード引数
複数の引数のうち、特定の引数の値を特に設定したい場合に使用します。
以下の例では初めの2つの引数は通常の引数で、さらに、複数ある引数のうちpriceの値を設定した例です。
通常の引数とキーワード引数の区切りに ; (セミコロン)を使用する点に注意して下さい。
(5)匿名関数
アロー関数によく似た関数です。
◆要約
①引数は一つのみ指定できます。
②複数行の処理を定義する場合は、begin~endで囲みます。
①引数は一つのみ指定できます。
引数を複数設定することはできません。
②複数行の処理を定義する場合は、begin~endで囲みます。
以下の例では2行の処理を行っています。
もくじ
Julia早引きノート[01]変数・定数の使い方
Julia早引きノート[02]算術式、演算子
Julia早引きノート[03]複素数
Julia早引きノート[04]正規表現
....
もくじを開く
Julia早引きノート[05]if文
Julia早引きノート[06]ループ処理
Julia早引きノート[07]try, catch, finally
Julia早引きノート[08]変数の型(Int, Float, Bool, Char, String)
Julia早引きノート[09]関数 (1)基本編
Julia早引きノート[10]関数 (2)応用編
Julia早引きノート[11]Nothing型
Julia早引きノート[12]複合型(Composite Type)型
Julia早引きノート[13]タプル
Julia早引きノート[14]リスト(Array型一次元配列)
Julia早引きノート[15]辞書(dictionary)
Julia早引きノート[16]集合
Julia早引きノート[17]多次元配列 (1)初期化
Julia早引きノート[18]多次元配列 (2)様々な演算や関数
Julia早引きノート[19]多次元配列 (3)サブ配列
Julia早引きノート[20]ファイル入出力
Julia早引きノート[21]JSON、XMLファイルの入出力
Julia早引きノート[22]Python関数やPythonモジュールの呼び出し
Julia早引きノート[23]JuliaでのMatplotlibによるグラフ描画
Julia早引きノート[24]CSVFiles(DataFrameとの連携)
Julia早引きノート[25]線形代数演算(ベクトル・行列計算)
(※引き続きコンテンツを増やしていきます)
関連情報
Julia - 公式ページ
https://julialang.org/
Julia - 日本語公式ドキュメント
https://julia-doc-ja.readthedocs.io/ja/latest/index.html
初めてのJuliaとインストール (Windows & Linux)
https://qiita.com/ttlabo/items/b05bb43d06239f968035
Julia - Mathematics
https://docs.julialang.org/en/v1/base/math/
ご意見など
ご意見、間違い訂正などございましたらお寄せ下さい。