今回は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プログラミング
公式ドキュメントの分量があまりに多くて、もう少しまとまったものが欲しいと思って購入しました。基本から応用まで幅広くカバーされつつ、量も丁度良いです。