ari23の研究ノート

メーカ勤務エンジニアの技術ブログです

Julia超入門|型

今回はJulia言語の型を扱います🐜

開発環境

開発環境は以下の通りです。

項目 内容
OS Windows 10 Home 64bit
Julia 1.6.3
Cmder 1.3.14

※Cmderは必須ではありません

解説

Juliaの型について、スクリプトを例に説明します。 以下をtypes.jlファイルとしてコピペして、動かしながら確認してください。

<スクリプト例>

function main()
    # String
    s = "Hello world!"
    # Char
    c = 'A'

    # 確認
    println(typeof(s))
    println(typeof(c))

    # Int64
    i = 1
    # Float64
    f = 2.3

    # 確認
    println(typeof(i))
    println(typeof(f))

    # Int指定
    ii::Int = 4
    # Float64指定
    ff::Float64 = 5.6

    # 確認
    println(typeof(ii))
    println(typeof(ff))

    # OSのビット数確認
    println(Sys.WORD_SIZE)
end

if abspath(PROGRAM_FILE) == @__FILE__
    main()
end


<出力結果>

C:\ari23\dev\julia
λ julia types.jl
String
Char
Int64
Float64
Int64
Float64
64

JuliaはMATLABやPythonと同じように動的型付け(dynamic typing), つまり値の型注釈を必須としません。その代わり、Juliaのシステム側が型を決めてくれます(暗黙的に型推論する、と言う)。しかし、必要に応じて型注釈を付与できるので、選択的型付け(optional typing)と言えます。

ところで、Juliaに限らず型の話は非常に奥が深いもので、プログラミングをしながら少しづつ理解していけばよいと思っています。 よって、このブログではString型、Char型、Int64型、Float64型の4つにさらっと触れる程度とします。

なお、Juliaの型についての公式ドキュメントはこちらです。

String型とChar型

Juliaでは、"で挟んだものをString型(文字列)'をChar型(文字) と呼び、文字列は複数の文字を含むものです。

スクリプト例を見ると、たしかに"Hello world!"はString型、'A'はChar型であることが確認できます。

Int64型とFloat64型

ざっくり言えば、Int64型は整数Float64型は(浮動)小数です。上記スクリプト例を見ると、1を格納した変数iがInt64型、2.3を格納した変数fがFloat64型に型推論されていることが確認できます。

型注釈を行うには、変数名のあとに::と付与したい型名を書きます。なお、整数型はIntのみでOKです。実行環境のOSに合わせて、Int32かInt64が自動で付与されます。

問題|総和(型注釈)

型注釈を付与する目的として、実行速度の改善が挙げられます。型注釈を付与すれば必ず改善するものではありませんが、関数を作るときは引数に型注釈を付与する癖を身に着けておくと良いでしょう。

その練習として、以前の総和の問題を関数化し、引数に型注釈を付与して作り直して下さい。

回答はこちら

おわりに

今回はJuliaの型を扱いました。

プログラミングをわかっている人からすると、多重ディスパッチなどを説明していないので、とても薄い内容に感じると思います。もっと知りたい方は、以下の参考文献をぜひ見てみてください。

以上、参考になれば幸いです(^^)

次はこちら

参考文献

参考文献は以下の通りです。

  • Julia Documentation
    Julia公式のドキュメントです。英語ですが、とても丁寧に書かれていて、疑問はだいたい解消されるのではと思います。読み応えも十分。

  • 1から始めるJuliaプログラミング
    公式ドキュメントの分量があまりに多くて、もう少しまとまったものが欲しいと思って購入しました。基本から応用まで幅広くカバーされつつ、量も丁度良いです。