我发现
Returns
在某些API需要函数,但您需要常量值的情况下非常有用。
下面是一个与DataFrames.jl结合的例子。让我们取一些数据帧,并在其中添加一个常量列:
julia> using DataFrames
julia> df = DataFrame(x=1:4)
4Ã1 DataFrame
Row â x
â Int64
ââââââ¼âââââââ
1 â 1
2 â 2
3 â 3
4 â 4
julia> transform(df, Returns(1))
4Ã2 DataFrame
Row â x x1
â Int64 Int64
ââââââ¼ââââââââââââââ
1 â 1 1
2 â 2 1
3 â 3 1
4 â 4 1
(还有其他方法可以执行此操作,但这显示了一个有用的情况,即
transform
函数期望函数)
其使用的一个更高级的方面是制作一个闭包:
julia> x = [1, 2, 3]
3-element Vector{Int64}:
1
2
3
julia> y = Returns(x)
Returns{Vector{Int64}}([1, 2, 3])
julia> y()
3-element Vector{Int64}:
1
2
3
julia> push!(x, 100)
4-element Vector{Int64}:
1
2
3
100
julia> y()
4-element Vector{Int64}:
1
2
3
100
正如您所看到的
y
如果基础向量绑定到
x
是突变的。请注意,此捕获是类型稳定的。
另请参阅中的讨论
the PR
介绍了它以及中的一个示例用法
this answer
在SO上。