在 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
问题:
我希望能够使用依赖于外部定义变量的自定义函数进行排序,例如:
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++
.
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