在Julia中获得世界函数时代的简单方法?

在Julia中获得世界函数时代的简单方法?,julia,Julia,我刚刚在《朱莉娅》中了解到了世界时代,我必须说,这个概念需要一些时间才能理解。为了帮助我理解它,在一些例子中能够明确地看到世界时代可能是有用的。有没有一个简单的方法可以做到这一点 我想我可以以某种方式做出我的例子,使它们总是遇到世界时代的错误,但我希望有一种不那么令人难以置信的方法来实现这一点 以下内容是黑客的,适用于0.6.1,但稍后可能会中断: min_world(f) = (methods(f)).ms[1].min_world macro cur_world() :(min_w

我刚刚在《朱莉娅》中了解到了世界时代,我必须说,这个概念需要一些时间才能理解。为了帮助我理解它,在一些例子中能够明确地看到世界时代可能是有用的。有没有一个简单的方法可以做到这一点


我想我可以以某种方式做出我的例子,使它们总是遇到世界时代的错误,但我希望有一种不那么令人难以置信的方法来实现这一点

以下内容是黑客的,适用于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,())提供了当前世界年龄,但我找不到他们读函数世界时代的地方。