在 Julia 的排序比较中允许外部变量

Allow outer variable inside Julia's sort comparison

问题:

我希望能够使用依赖于外部定义变量的自定义函数进行排序,例如:

k = 2
sort([1,2,3], lt=(x,y) -> x + k > y)

这很管用,因为 k 是在全局范围内定义的。

这就是我的问题所在,因为我想做一些类似于:

function 
    k = 2
    comp = (x,y) -> x + k > y
    sort([1,3,3], lt=comp)
end

这行得通,但感觉就像一个 hack,因为我的比较函数要大得多,而且必须在函数体中定义它感觉真的很不对劲。

例如,这行不通:

comp = (x,y) -> x + k > y # or function comp(x,y) ... end
function 
    k = 2
    sort([1,3,3], lt=comp)
end

所以我只是想知道是否有任何方法可以像 C++.

中的 lambda 函数一样捕获诸如 k 之类的变量

这是你想要的吗?

julia> comp(k) = (x,y) -> x + k > y
comp (generic function with 1 method)

julia> sort([1,3,2,3,2,2,2,3], lt=comp(2))
8-element Vector{Int64}:
 3
 2
 2
 2
 3
 2
 3
 1