Baseは基本的な機能を含む標準モジュールであり、Juliaの基礎ライブラリである。ほとんどの場合にBaseが必要なので、全てのモジュールは暗黙的に「using Base
」を含む。
Juliaプログラムに渡されたコマンドライン引数は、ARGS定数に文字列の配列として格納されている。
println(string(length(ARGS), " argument(s) were passed to ", PROGRAM_FILE))
for arg in ARGS
println(arg)
end
上記プログラムを実行すると、スクリプトに渡した引数が表示される。
$ julia example.jl foo bar baz
3 argument(s) were passed to example.jl
foo
bar
baz
コマンドラインからJuliaに渡されたスクリプト名を取得するには、PROGRAM_FILE定数を参照すればよい。
println(PROGRAM_FILE)
上記プログラムを実行すると、Juliaで実行したスクリプト名が表示される。
$ julia example.jl
example.jl
Base.stderr
は標準エラーストリームを参照するグローバル変数である。
標準エラーへ出力するには、標準エラーストリームを参照するグローバル変数stderrを使う。
標準エラーへ改行ありで出力するには、println関数の第1引数にstderrを指定する。
println(stderr, "ファイルのオープンに失敗しました。")
標準エラーへ改行なしで出力するには、print関数またはwrite関数の第1引数にstderrを指定する。
print(stderr, "ファイルのオープンに失敗しました。")
write(stderr, "ファイルのオープンに失敗しました。")
Juliaのバージョンを取得するには、VERSION定数を参照すればよい。
println(VERSION)
上記プログラムを実行すると、Juliaのバージョンが表示される。
$ julia example.jl
1.1.0
Juliaのバージョンを判定するには、VERSION定数をバージョン番号リテラルと比較する。バージョン番号リテラルは、文字列の前にv
を付ける。
if v"1.1" <= VERSION < v"1.2-"
println("バージョン1.1.x")
end
deleteat!() はコレクションの指定位置から要素を削除する関数である。
julia> x = [1, 2, 3]
3-element Array{Int64,1}:
1
2
3
julia> deleteat!(x, 2)
2-element Array{Int64,1}:
1
3
eltype() はコレクションの型を返す関数である。
julia> eltype((1, 2))
Int64
julia> eltype(("foo", "bar"))
String
julia> eltype((1, "foo"))
Any
empty!() はコレクションを空にする関数である。ただし、タプルや名前付きタプルを空にすることはできない。
julia> x = [1, 2]
2-element Array{Int64,1}:
julia> empty!(x)
Int64[]
julia> x = Dict("a" => 1, "b" => 2)
Dict{String,Int64} with 2 entries:
"b" => 2
"a" => 1
julia> empty!(x)
Dict{String,Int64}()
julia> x = Set([1, 2])
Set{Int64} with 2 elements:
2
1
julia> empty!(x)
Set{Int64}()
Julia における Base.endswith()
は、指定した文字列で終わるかどうかを返す関数である。
julia> endswith("Julia", "ia")
true
julia> endswith("Julia", "IA")
false
指定したメッセージでErrorExceptionを発生させる。
error("wrong argument")
プログラムを停止する。既定の終了コードは0で、プログラムが正常に完了したことを示す。
exit()
終了コードを使用してプログラムを停止する。
exit(1)
insert!() はコレクションの指定位置に要素を挿入にする関数である。
julia> x = [1, 2]
2-element Array{Int64,1}:
1
2
julia> insert!(x, 2, 3)
3-element Array{Int64,1}
1
3
2
isempty() はコレクションが空かどうかをブール値で返す関数である。
julia> isempty(())
true
julia> isempty((1))
false
julia> isempty((a = 1, b = 2))
false
julia> isempty([])
true
julia> isempty([1])
false
julia> isempty(Dict())
false
julia> isempty(Dict("a"=>1))
true
julia> isempty(Set([]))
true
julia> isempty(Set([1]))
false
join() は指定した文字列のコレクションを結合して返す関数である。
julia> join(["Julia", "Language"], "-")
"Julia-Language"
length() はコレクションの要素数を返す関数である。
julia> length((1, 2))
2
julia> length((a = 1, b = 2))
2
julia> length([1, 2])
2
julia> length(Dict("a"=>1, "b"=>2))
2
julia> length(Set([1, 2]))
2
occursinは第1引数に指定した文字列が第2引数に含まれていればtrue、含まれていなければfalseを返す。第1引数には正規表現を指定できる。
file = "index.html"
if occursin(r"[a-zA-Z]*html$", file)
println(file)
end
pop!() はコレクションの末尾から要素を取り出す関数である。取り出した要素はコレクションから削除される。
julia> x = [1, 2, 3]
3-element Array{Int64,1}:
1
2
3
julia> pop!(x)
3
julia> x
2-element Array{Int64,1}:
1
2
popfirst!() はコレクションの先頭から要素を取り出す関数である。取り出した要素はコレクションから削除される。
julia> x = [1, 2, 3]
3-element Array{Int64,1}:
1
2
3
julia> popfirst!(x)
1
julia> x
2-element Array{Int64,1}:
2
3
push!() はコレクションの末尾に要素を追加する関数である。
julia> x = [1, 2]
2-element Array{Int64,1}:
1
2
julia> push!(x, 3)
3-element Array{Int64,1}:
1
2
3
push!() はコレクションの先頭に要素を追加する関数である。
julia> x = [2, 3]
2-element Array{Int64,1}:
2
3
julia> pushfirst!(x, 1)
3-element Array{Int64,1}:
1
2
3
run() は外部プログラムを実行する関数である。
julia> run(`ls -a`)
.bash_history .bashrc
startswith() は指定した文字列で始まるかどうかを返す関数である。
julia> startswith("Julia", "Ju")
true
julia> startswith("Julia", "JU")
false
ファイルの状態を取得するには、stat関数を使う。
stat(file)
stat関数は、ファイルに関する情報を含む構造体を返す。構造体のフィールドは次のとおり。
フィールド | 説明 |
---|---|
size | ファイルのサイズ(バイト単位) |
device | ファイルを含むデバイスのID |
inode | ファイルのiノード番号 |
mode | ファイルの保護モード |
nlink | ファイルへのハード・リンクの数 |
uid | ファイル所有者のユーザーID |
gid | ファイル所有者のグループID |
rdev | このファイルがデバイスを参照している場合、参照しているデバイスのID |
blksize | ファイル・システムの推奨ブロック・サイズ |
blocks | 割り当てられたブロックの数 |
mtime | ファイルが最後に更新された時刻(Unixタイムスタンプ) |
ctime | ファイルが作成された時刻(Unixタイムスタンプ) |
Julia言語でファイルのサイズと最終更新日時を取得する例を次に示す。
julia> s = stat("example.jl")
StatStruct(mode=0o100666, size=2507)
julia> s.size
2507
julia> using Dates
julia> Dates.unix2datetime(s.mtime)
2021-02-06T06:36:15.653
Julia 言語で配列の値をソート(並び替え)するには、sort 関数を使う。
julia> sort([3, 1, 2])
3-element Array{Int64,1}:
1
2
3
デフォルトでは昇順(小さい順)でソートされる。
降順(大きい順)にソートするには、rev 引数に true を指定する。
julia> sort([3, 1, 2], rev=true)
3-element Array{Int64,1}:
3
2
1
alg 引数にソートのアルゴリズムを指定することもできる。次のアルゴリズムを指定できる。
julia> sort([3, 1, 2], alg=InsertionSort)
3-element Array{Int64,1}:
1
2
3
split() は指定した文字列で分割する関数である。
julia> split("Julia-Language", "-")
2-element Array{SubString{String},1}:
"Julia"
"Language"
unioin() はコレクションの和集合を返す関数である。引数に渡したコレクションのすべての値を含むコレクションを返す。
julia> union((1, 2, 3), (2, 3, 4))
4-element Array{Int64,1}:
1
2
3
4
julia> union([1, 2, 3], [2, 3, 4])
4-element Array{Int64,1}:
1
2
3
4
julia> union((1, 2), (3, 4), (5, 6))
6-element Array{Int64,1}:
1
2
3
4
5
6
intersect() はコレクションの積集合を返す関数である。引数に渡したコレクションのすべてに含まれる値のコレクションを返す。
julia> intersect((1, 2, 3), (2, 3, 4))
2-element Array{Int64,1}:
2
3
julia> intersect([1, 2, 3], [2, 3, 4])
2-element Array{Int64,1}:
2
3
julia> intersect((1, 2, 3), (2, 3, 4), (3, 4, 5))
1-element Array{Int64,1}:
3
Juliaでファイルをオープンするには、open
関数を使う。
try
f = open("example.txt")
close(f)
catch
println("ファイルのオープンに失敗しました。")
end
ファイルのオープンに失敗すると、SystemError例外がスローされる。
ファイルをreadモードでオープンする。
f = open("example.txt", "r")
ファイルに書き込むためにオープンするには、open
関数の第2引数に"w"
オプションを指定する。
f = open("example.txt", "w")
ファイルをappendモードでオープンする。
f = open("example.txt", "a")
オープンしたファイルを自動的にクローズするために、open() do という構文が用意されている。
open("example.txt") do f
for l in eachLine(f)
println(l)
end
end
open do に対応する end に達すると、ファイルが自動的にクローズされる。
ファイルから行を読み込むには、readlines
関数を使う。
try
f = open("example.txt")
lines = readlines(f)
for l in lines
println(l)
end
close(f)
catch
println("ファイルのオープンに失敗しました。")
end
オープンしたファイルへ1行書き込むには、write
関数を使う。
try
f = open("example.txt", "w")
write(f, "Hello, world!")
close(f)
catch
println("ファイルのオープンに失敗しました。")
end
オープンしたファイルを使い終わったら、ファイルを閉じる必要がある。ファイルをクローズするには、close
関数を使う。
try
f = open("example.txt")
close(f)
catch
println("ファイルのオープンに失敗しました。")
end
findfirst() は指定した文字列の位置を返す関数である。
julia> findfirst("uli", "Julia")
2:4
length() は文字列の長さ(文字数)を返す関数である。
julia> length("Julia言語")
7
repeat() は文字列を指定した回数分繰り返した文字列を返す関数である。
julia> repeat("Julia", 3)
"JuliaJuliaJulia"
replace() は指定した文字列で置き換える関数である。
julia> replace("Junior", "nior" => "lia")
"Julia"
Juliaで作業ディレクトリを変更するには、cd
関数を使う。
cd("/Users/tsuka/Documents")
Juliaで現在の作業ディレクトリを取得するには、pwd
関数を使う。
wd = pwd()
println(wd)
Juliaでディレクトリ内のファイルとディレクトリの一覧を取得するには、readdir
関数を使う。
try
dirent = readdir("/Users/tsuka/Documents")
for i in dirent
println(i)
end
catch
println("ディレクトリの読み込みに失敗しました。")
end
ディレクトリの読み込みに失敗すると、SystemError例外がスローされる。
Juliaでディレクトリ内のファイルとディレクトリの一覧を、その下層ディレクトリも含めて再帰的に取得するには、walkdir
関数を使う。
try
for (root, dirs, files) in walkdir("/Users/tsuka/Documents")
println("$root 下のディレクトリ")
for dir in dirs
println(joinpath(root, dir))
end
println("$root 下のファイル")
for file in files
println(joinpath(root, file))
end
end
catch
println("ディレクトリの読み込みに失敗しました。")
end
ディレクトリの読み込みに失敗すると、SystemError例外がスローされる。
時刻を指定したフォーマットに変換した文字列で返す。指定できるフォーマットは標準Cライブラリと同じ。
フォーマット | 説明 |
---|---|
%d | 日 |
%H | 24時間表記の時 |
%I | 12時間表記の時 |
%m | 月 |
%M | 分 |
%S | 秒 |
%y | 西暦の下2桁 |
%Y | 4桁の西暦 |
lastmod = Libc.strftime("%Y-%m-%d", mtime(path))
Base.MathConstants.eulergamma はオイラーの定数を表わす数学定数である。
julia> Base.MathConstants.eulergamma
γ = 0.5772156649015...
Base.MathConstants.golden は黄金比を表わす数学定数である。
jjulia> Base.MathConstants.golden
φ = 1.6180339887498...
Base.MathConstants.pi および Base.MathConstants.π は円周率を表わす数学定数である。
julia> π
π = 3.1415926535897...
julia> pi
π = 3.1415926535897...
Base.MathConstants.ℯ は自然対数の底(ネイピア数)を表わす数学定数である。
julia> ℯ
ℯ = 2.7182818284590...
型変換関数を使ってデータ型を変換することができる。
julia> BigFloat(pi)
3.141592653589793238462643383279502884197169399375105820974944592307816406286198
JuliaLang.org contributors (2022) Julia Documentation