関数

2026年3月16日
1 分

関数の定義には function キーワードを使う。

julia> function add(x, y)
         x + y
       end
add (generic function with 1 method)

最後に評価した式の値が、自動的に返り値になる。 あるいは、明示的に return x + y としてもいい。

定義した関数の呼び出し。

julia> add(3, 7)
10

関数の本体部分が1行なら、次のような形でも定義できる。呼び出し方法は同じ。

julia> mul(x, y) = x * y
mul (generic function with 1 method)

julia> mul(3, 7)
21

引数や返り値には、型を指定することもできる。次のように :: に続けて型を指定する。

julia> add_typed(x::Int, y::Int)::Float64 = x + y
add_typed (generic function with 1 method)

julia> v = add_typed(3, 7)
10.0

julia> typeof(v)
Float64

この例では2つの引数は Int、返り値は Float64

型を指定した定義では、呼び出し時に引数の型が合わないとエラーになる。

julia> add_typed(3, 7.5)
ERROR: MethodError: no method matching add_typed(::Int64, ::Float64)
The function `add_typed` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  add_typed(::Int64, ::Int64)
   @ Main REPL[18]:1

上の例とは逆に、引数を Float64、返り値を Int にしてみよう。

julia> add_typed2(x::Float64, y::Float64)::Int = x + y
add_typed2 (generic function with 1 method)

この場合、返り値が Int に変換できないとエラーになる。

julia> add_typed2(3.2, 7.5)
ERROR: InexactError: Int64(10.7)
Stacktrace:
 [1] Int64
   @ .\float.jl:923 [inlined]
 [2] convert
   @ .\number.jl:7 [inlined]
 [3] add_typed2(x::Float64, y::Float64)
   @ Main .\REPL[21]:1
 [4] top-level scope
   @ REPL[22]:1

うまく変換できる場合にはエラーにならない。

julia> add_typed2(3.2, 7.8)
11