2
我刚刚了解了朱莉娅的世界年龄,并且必须说这个概念需要一段时间才能沉入其中。为了帮助我接近它,在一些例子中能够明确地看到世界年龄可能是有用的。是否有捷径可寻?在Julia中获得世界时代功能的简单方法?
我想我可以以某种方式使我的例子,使他们总是遇到一个世界时代的错误,但我希望有一个不太令人难以置信的方式来实现这一点。
我刚刚了解了朱莉娅的世界年龄,并且必须说这个概念需要一段时间才能沉入其中。为了帮助我接近它,在一些例子中能够明确地看到世界年龄可能是有用的。是否有捷径可寻?在Julia中获得世界时代功能的简单方法?
我想我可以以某种方式使我的例子,使他们总是遇到一个世界时代的错误,但我希望有一个不太令人难以置信的方式来实现这一点。
以下是黑客十岁上下,并且适用于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
采用世界年龄计数器在任何真实的代码中听起来都是错误的方式。
触发世界年龄错误并检查调用它的函数的堆栈跟踪,以及如何获取该信息以将其打印出来。 –
使用你的方法,我发现'ccall(:jl_get_world_counter,UInt,())'给你当前的世界时代,但我找不到他们阅读功能世界时代的地方。 – gTcV