目次
- 目次
- はじめに
- Julia 0.7とJulia 1.0の関係
- v0.6のコードとの共存
- パッケージのインストール
- 自作パッケージの作り方
- v0.6からv0.7の変更点
- v1.0に関する便利な情報
- 参考資料
- MyEnigma Supporters
はじめに
先日Julia 1.0がリリースされました。
自分はこれまでJulia 0.6系を使っていたので、
それらのコードをJulia 1.0に対応する際に注意が必要だと思ったことをメモしておきます。
Julia 0.7とJulia 1.0の関係
Julia 0.7とJulia 1.0の関係に関しては、下記を参照ください。
0.7でコードの変更をしつつ、すべてのDepricated warningが消えたら、
1.0に移行するのが良さそうです。
v0.6のコードとの共存
一気に、0.6のコードを0.7以上にするのは厳しいので、
徐々にコードを変更していくと思いますが、
0.6と0.7の両方で動かす場合は、下記のように
バージョン毎に処理を変えることができます。
if VERSION > v"0.7-" using Test using LinearAlgebra const __MAIN__ = length(PROGRAM_FILE)!=0 && occursin(PROGRAM_FILE, @__FILE__) else using Base.Test const __MAIN__ = length(PROGRAM_FILE)!=0 && contains(@__FILE__, PROGRAM_FILE) end
MAINは個人的に使っている
Pythonのmainと似た動きをするグローバル変数です。
パッケージのインストール
Julia 0.6では、
Pkg.add("DataFrames")
でDataFrameパッケージをインストールできましたが、
Julia 1.0ではPkgはデフォルトでは読み込まれず、
using Pkg;Pkg.add("DataFrames")
として、インストールする必要があります。
自作パッケージの作り方
下記を読めばわかると思いますが、
Juliaのターミナル上で ] を入力し、
Pkgモードにしてから、
generate PkgName
とすることでパッケージを作ることができます。
そして、
push!(LOAD_PATH, "/path/to/PkgName/src")
でパスを通せば、
using PkgName
で使うことができます。
v0.6からv0.7の変更点
下記がv0.6からv0.7の変更点です。
v1.0に関する便利な情報
#Julia言語 単位行列が欲しければ
— 黒木玄 Gen Kuroki (@genkuroki) 2018年8月17日
using LinearAlegebra
eye(T::Type, m, n) = Matrix{T}(I, m, n)
eye(m, n) = eye(Float64, m, n)
のあとにeye(T::Type, n) = eye(T, n, n)とするより
eye(T::Type, n) = Diagonal{T}(I, n)
eye(n) = eye(Float64, n)
がいいかも。https://t.co/KxExBN0A4b
#Julia言語 v1.0では色々変わっている。v0.6では
— 黒木玄 Gen Kuroki (@genkuroki) 2018年8月17日
a = Array{Float64}(m,n)
で初期化されていない配列を作れたのですが、v1.0では
a = Array{Float64}(undef, m, n)
と undef, を追加する必要があります。こういう書き方が面倒なら0で埋め尽くす
a = zeros(m,n)
を使えばよいと思う。
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。