2017-11-11 81 views
2

我剛剛瞭解了朱莉婭的世界年齡,並且必須說這個概念需要一段時間才能沉入其中。爲了幫助我接近它,在一些例子中能夠明確地看到世界年齡可能是有用的。是否有捷徑可尋?在Julia中獲得世界時代功能的簡單方法?

我想我可以以某種方式使我的例子,使他們總是遇到一個世界時代的錯誤,但我希望有一個不太令人難以置信的方式來實現這一點。

+0

觸發世界年齡錯誤並檢查調用它的函數的堆棧跟蹤,以及如何獲取該信息以將其打印出來。 –

+0

使用你的方法,我發現'ccall(:jl_get_world_counter,UInt,())'給你當前的世界時代,但我找不到他們閱讀功能世界時代的地方。 – gTcV

回答

2

以下是黑客十歲上下,並且適用於0.6.1,但稍後可能會打破:

min_world(f) = (methods(f)).ms[1].min_world 

macro cur_world() 
    :(min_world(x -> $(rand())*x)) 
end 

而且它的工作原理如下:

julia> f(x) = 2x 
f (generic function with 1 method) 

julia> @cur_world() 
21827 

julia> g(x) = sqrt(x) 
g (generic function with 1 method) 

julia> @cur_world() 
21829 

julia> min_world(f) 
21826 

julia> min_world(g) 
21828 

採用世界年齡計數器在任何真實的代碼中聽起來都是錯誤的方式。

相關問題