Julia function

Juliaで関数を定義するための基本的な構文は次のとおり。

function f(x, y)
  x + y
end

関数は次のように簡潔な構文で記述することもできる。

f(x, y) = x + y

Juliaの関数では、評価された最後の式が関数の戻り値として返される。他の多くのプログラミング言語のように、戻り値を return で明示することもできる。

function f(x, y)
  return x + y
end

Juliaでは数式をそのまま記述できるようにする方針なので、関数によって返される値を return で明示する必要はない。しかし、関数の戻り値をソースコード上で検索しにくくなるため、あえて明示する方が望ましい。

引数の型を明示することもできる。

function f(x::Float64, y::Float64)
  x + y
end

関数の引数や戻り値のデータ型

関数の引数や戻り値のデータ型を指定することができる。

function f(x::UInt32)::Float64
  return Float64(pi * x)
end

キーワード引数

Juliaの関数は、引数を名前ではなくキーワードで識別することができる。

function f(a; b=2)
  a ^ b
end

println(f(2))
println(f(2, b=3))

可変長引数

Julia言語の関数は可変長引数を取ることができる。

可変長引数とは、関数における引数の個数が固定ではなく、関数呼び出しごとに引数の個数を変えることができるものである。

function add(x...)
  sum = 0
  for i=1:length(x)
    sum += x[i]
  end
  sum
end

# 1
println(add(1))

# 1 + 2
println(add(1, 2))

# 1 + 2 + 3
println(add(1, 2, 3))

ポリモーフィズム

Julia言語では、引数の型が異なれば、同じ名前であっても別の関数と見なされる。

function f(x::Int64, y::Int64)
  x + y
end

function f(x::Float64, y::Float64)
  x + y
end