gpt4 book ai didi

arrays - 在 julia 0.4 中工作的匿名函数数组,在 0.5.1 中不工作

转载 作者:行者123 更新时间:2023-12-02 09:23:29 27 4
gpt4 key购买 nike

我正在将一些代码从 Julia 0.4.7 移植到 0.5.1。我注意到有一些与匿名函数数组不兼容的东西。代码在这里:

f = x::Array{Function} -> size(x)

# Option 1
f([k -> k+1, k-> k+1]) # This works in 0.4 & 0.5

# Option 2
f(repmat([k -> k+1], 2)) # This only works in 0.4

据我所知,区别在于虽然在 0.4 中匿名数组在内部仍然被视为 Array{Function, 1},但在 0.5 中它被视为 Array{#11#12, 1} (数字可能会改变) ),因此它会引发 MethodError 因此它们不匹配。

虽然这个例子很愚蠢,但它显示了我真正需要的:将匿名函数复制可变次数。

谢谢!

最佳答案

在 Julia 0.5+ 中,Function becomes an abstract type ,因此 Array{Function} 是一个参数类型,它是不变的。

julia> typeof(x -> 2x) 
##1#2

julia> typeof(x -> 2x) <: Function
true

julia> typeof([x -> 2x]) <: Array{Function}
false

因此,定义f的正确方法是:

f{T<:Function}(x::Array{T}) = size(x)

julia> f(repmat([k -> k+1], 2))
(2,)

关于arrays - 在 julia 0.4 中工作的匿名函数数组,在 0.5.1 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40021826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com