无名称和双括号的Julia函数

3

这是一个“从Julia开始”的问题。

我读了一些基础的Julia函数教程,但仍然不理解双括号的意义,就像在这个例子中(来自JuliaReinforcement RandomWalk1D):

function (env::RandomWalk1D)(action)
    env.pos = max(min(env.pos + env.actions[action], env.N), 1)
end

在这里,双括号(没有函数名称)是什么意思?什么时候以及如何调用此函数?
谢谢!
1个回答

4

我假设你指的是可以在这里找到的包源代码。

这种定义方式创建了一个函数对象。可以参见这里文档中的说明。

其思想很简单。你希望像调用函数一样调用一个值。下面是一个最小示例:

julia> struct A
           v
       end

julia> (x::A)() = x.v

julia> a = A(100)
A(100)

julia> a()
100

请注意,在此示例中a是一个值,但您仍可以像调用函数一样使用a()来调用它。
如果有不清楚的地方,请评论,我可以进行扩展。

太好了,非常清晰!非常感谢!还有提供文档链接!!! - Mike75

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接