Julia言語の基本構文#

変数#

x = 1
α = 2 # \alpha + TAB key
2

varを用いることで,任意の文字列を変数にすることができる.

var"log(1+θ)" = 10
10

for loop#

x = 1
for i in 1:10
    x += 1
end
println(x)
11

関数名の!記号#

単なる慣習として関数への入力を変更する場合に!を付ける.

関数内で配列を変更する場合には注意が必要である.以下に入力された配列を同じサイズの要素1の配列で置き換える,ということを目的として書かれた2つの関数がある.違いはvの後に[:]としているかどうかである.

function wrong!(a::Array)
    a = ones(size(a))
end

function right!(a::Array)
    a[:] = ones(size(a))
end
right! (generic function with 1 method)

実行するとwrong!の場合には入力された配列が変更されていないことがわかる.

using Random
v = rand(2, 2)
println("v : ", v)

wrong!(v)
println("wrong : ", v)

right!(v)
println("right : ", v)
v : 
[0.8385176458994452 0.33948083102842863; 0.23994246189788015 0.6555135942663283]
wrong : [0.8385176458994452 0.33948083102842863; 0.23994246189788015 0.6555135942663283]
right : [1.0 1.0; 1.0 1.0]

broadcastingの回避#

foo(a,b) = sum(a) + b
foo (generic function with 1 method)
println(foo.(Ref([1,2]),[3,4,5]))
println(foo.(([1,2],), [3,4,5]))
println(foo.([[1,2]], [3,4,5]))
[6, 7, 8]
[6, 7, 8]
[6, 7, 8]