関数定義
code:jl
function 関数名(引数1, 引数2, ...)
// 関数の内容
return 返り値
end
最後に評価された式が返り値となるので、return は書かなくても良い。
書くとしたら途中で脱出するケース。
意図的に返り値を返さない場合、return nothing と書く。
julia は end でスコープを終わらせるスタイル。
JavaScript ライクな関数定義方法もある。
code:julia
関数名(引数1, 引数2, ...) = 式
式がそのまま関数定義になる。
デフォルト値を設定すると、引数を省略可能になる。
code:jl
function f(a, b=1, c="abc")
// ...
end
f(1)
f(1, 2)
f(1, 2, "xyz")
可変長引数の受け取り方
引数... として受け取ると、引数に配列が引き渡される。
関数の多重定義(関数オーバーロード、多重ディスパッチ)
関数の引数の型を明示することで、型ごとに関数を切り替えることができる。
code:jl
function 関数名(引数1::型1, 引数2::型2, ...)
// ...
end
型推論が行われるが、意図的に返り値の型を指定する場合
code:jl
function 関数名(引数1, 引数2, ...)::返り値型
// ...
end