Julia 結構和module基本用法
阿新 • • 發佈:2019-02-17
Julia 作為高階語言,很好的封裝特性肯定是基本特徵, Julia的基本結構是 最外面一層是module 下面包含一系列function。在julia裡面function非常廉價而高效,建議所有功能都裝進function裡,而不是寫在外面。
module Modulename
#function
#....#....
end
如果你將自己編寫的module存在了不同的目錄,比如MyModule.jl 放在~/下,執行
using MyModule
會報錯,因為Julia認為你用的包沒有下載,julia 用 LOAD_PATH來管理路徑,我們檢視一下LOAD_PATH的類,
(typeof是一個常用函式,用來檢視類,julia中所有東西,不論是變數還是操作都含有類,可以通過定義類來對變數進行限制或者根據不同的類實現同一操作比如+,具有無限多可能的methods)
typeof(LOAD_PATH)
返回:Array{Any,1} 可見是一個任何型別(1.0版本特徵,0.6前是String)的一維Array。
我們可以通過
push!(LOAD_PATH, "~/.")
新增進去,以後就可以直接using 了。建議自建的module還是放在一起的好。
舉個栗子
module MyModule
f(x,y)= x^2 + y^2
function hello(name)
println("hello",name)println("hello",name)
end
end
using MyModule
此時如果呼叫
MyModule.<Tab>
會自動補全你模組下函式,並給出補全提示,非常爽。如果想不用模組名直接呼叫內部函式,需要在模組里加上
module MyModule
export f
f(x,y)= x^2 + y^2f(x,y)= x^2 + y^2
function hello(name)
println("hello",name)println("hello",name)
end
end
就可以直接呼叫f了。
如果你項避免衝突,不想直接呼叫f,可以通過
import MyModule
而不是
using MyModule
這樣MyModule裡面所有函式都需要MyModule. 來進行呼叫了。
當然這只是Module的入門,比如和Python很像的__init__函式等功能,就需要慢慢學習了。
下次可能學習一下 struct, 這個和Module容易產生混淆,其實用法區別很大的。