我目前正在學習這種偉大的茱莉亞語言,但我面臨的困難是我最好的朋友Google似乎沒有回答(也許我的搜索技能很差)。無法在另一個模塊中定義的函數中創建在模塊M1中定義的類型的新實例M2
反正...我的背景是這樣的:
我有兩個模塊:
M1.jl
module M1 type T t1::Int64 end T() = T(0) export T end
M2.jl
module M2 function create() isdefined(:T) ? T() : "undef" end export create end
我只想調用create
函數來實例化類型爲T
的對象,如果類型已定義。在這裏我所試圖做的(模塊M1
和M2
假定路徑):
using M1;
using M2;
create()
然後我得到這個ERROR: UndefVarError: T not defined
而我會有望得到M1.T(0)
因爲T
在解釋或者在被稱爲至少"undef"
如果模塊M1
沒有加載到我的會話中。
另外,如果我這樣做: 使用M1;使用M2的 ;
isdefined(:T) ? T() : "undef"
然後一切都很好,我得到:M1.T(0)
所以我的問題是:
- 是可以使功能
create
「看」模塊中定義的類型加載當前會議? - 能否請您解釋一下whay我得到這個錯誤
ERROR: UndefVarError: T not defined
因爲如果T
在我的背景沒有定義,isdefined
必須返回false
這樣"undef"
應該已經回來了?
非常感謝提前。
問候。
爲什麼你不能在實際類型爲'create'通過一個完整的路徑?無論如何,'M2'顯然依賴於'M1',所以依賴必須以某種方式進行調解。 –
對不起函數'create'的參數,它是複製粘貼錯誤...謝謝你。沒錯,'M2'取決於'M1',但我認爲這將是一種通過模塊'Main'滿足這種依賴關係的方法...... –