首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在julia 0.4中工作的匿名函数数组,而不是0.5.1中的

在julia 0.4中工作的匿名函数数组,而不是0.5.1中的
EN

Stack Overflow用户
提问于 2016-10-13 13:03:29
回答 1查看 207关注 0票数 2

我正在将某些代码从Julia0.4.7移植到0.5.1。我注意到有一些与匿名函数数组不兼容的东西。守则如下:

代码语言:javascript
复制
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中匿名数组仍然被内部看作数组{Function,1},但在0.5中,它看起来像Array{#11#12,1} (数字可能会改变),因此它会引发一个MethodError,因此它们不匹配。

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-13 13:39:33

在0.5+, becomes an abstract type中,Array{Function}是一个不变量的参数型。

代码语言:javascript
复制
julia> typeof(x -> 2x) 
##1#2

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

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

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

代码语言:javascript
复制
f{T<:Function}(x::Array{T}) = size(x)

julia> f(repmat([k -> k+1], 2))
(2,)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40021826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档