バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回は、Scilabの場合のユーザ関数作成方法について実施。
MATLABと似ていると思いきや、全く異なる仕組みっぽい。
スクリプトに記載したとしても、明示的にワークスペースに関数を展開する必要がある。
今回はJuliaについて。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
Juliaの場合
毎度言ってる気がするが、Juliaについては素人なんで。
Juliaの話になるたびに言ってるね。
というわけで、抜け漏れはあるという前提で一応調べてきた。
イメージ的にはPythonに近いと思ってよいかもしれない。
こんな感じでやればOKだろう。
対話モードで関数定義
> function test_func(a,b,c)
x=a+b
y=a-c
return x, y
end
test_func (generic function with 1 method)
> (A,B)=test_func(1,2,3)
(3, -2)
funcionで初めてendで終了だな。
Pythonと違ってインデントは気にしなくてOKだ。
まぁ見やすさの都合で入れるべきではあるけどね。
あと、明示的にreturn分を使わない場合は、最後に更新した変数が戻り値になるな。今回のように2変数を戻したい場合は、明示的にreturn文を使うことになるだろう。
これまた特殊な仕様が・・・。
※ 必ずreturnが必要ということもなく、関数の最後に変数を置くことでタプルとして戻せる。
> function test_func(a,b,c)
x=a+b
y=a-c
x, y
end
test_func (generic function with 1 method)
> (A,B)=test_func(1,2,3)
(3, -2)
別ファイルで関数定義
別ファイルで先ほどの関数を記載し、
# a,b,cが引数
# x,yが戻り値
function test_func(a,b,c)
x=a+b
y=a-c
return x, y
end
これをtest.jlというファイルとしよう。
このを利用するにはincludeを使用する。
> include("test.jl")
test_func (generic function with 1 method)
> (A,B)=test_func(1,2,3)
(3, -2)
これはなんかC言語っぽい。
まぁ似たような動きはするな。
あと、Juliaの場合、moduleを使用するパターンもあるのだが、
これはMATLABやPythonのclassに相当する。
classについては、本シリーズでは触れてないので、Juliaでもここでは省略しておこう。
まとめ
まとめだよ。
- Juliaの場合の場合のユーザ関数作成方法について実施。
- 基本的にはPythonに似ている。
- 2変数以上を戻す場合は、明示的にreturn文を使用する必要がある。
- 他のファイルで関数を定義している場合はinclude文を使用する。
- C言語のincludeに似ている。
バックナンバーはこちら。
コメント