場合は(変数の)型の指定 (変換に失敗するとエ ラー) • 代入時の右辺などの場合 は 型検査 (互換性のない 型だとエラー) • ※型ヒントではない! (重要) julia> let x::Int = sin(π) # == 0.0 なので変換されて 0 が代入される x end 0 julia> let x = (sin(π)::Int) # こちらはエラー(!(sin(π) <: Int) なので) x end ERROR: TypeError: in typeassert, expected Int64, got a value of type Float64 Stacktrace: [1] top-level scope @ REPL[XX]:2
の派生型の定義)と同じ意 味(詳細略) julia> struct MyDecimal <: Real value::BigInt point::Int end # 固定小数点数を意図した型定義 julia> MyDecimal(1, 0) isa Number true julia> MyDecimal(1, 0) isa Integer false
メ ソッド と呼ぶ • 引数の違いとは ◦ 引数の個数の違い ◦ 引数の型の違い ◦ その組み合わせ julia> add(x, y) = x + y add (generic function with 1 method) julia> add(x, y, z) = x + y + z add (generic function with 2 methods) julia> add(x, y, z...) = add(x + y, z...) add (generic function with 3 methods) julia> methods(add) # 3 methods for generic function "add" from Main: [1] add(x, y) [2] add(x, y, z) [3] add(x, y, z...)