Julia中1元素函数向量类型异常问题咨询
这是Julia的有意设计,不是Bug,是数组字面量的类型推断机制导致的。
Julia在解析[]构造的数组字面量时,会自动推导当前元素的最小公共父类型作为数组的元素类型,尽可能使用更具体的类型来提升后续的运算效率:
- 当数组包含
mean、sum两个不同函数时,typeof(mean)和typeof(sum)是两个不相关的具体类型,二者的最小公共父类型是Function,因此最终得到的数组类型为Vector{Function} - 当数组仅包含
mean一个元素时,不存在其他元素做类型合并,推导得到的最小公共父类型就是typeof(mean)本身,因此数组类型为Vector{typeof(mean)}
如果你需要强制得到元素类型为Function的数组,可以主动指定类型构造,两种常用写法如下:
# 写法1:类型前置的数组字面量语法 Function[mean] # 写法2:显式调用数组构造函数 Vector{Function}([mean])
以上两种写法都会返回你预期的1-element Vector{Function}对象。
内容的提问来源于stack exchange,提问作者Georgery
相关产品推荐
相关产品推荐

