【发布时间】:2015-06-19 19:26:49
【问题描述】:
我正在为布尔二维数组编写一个函数:
function foo(A::Array{Bool,2})
...
end
评估和测试它
A = randbool(3,3)
foo(A)
返回
ERROR: 'foo' has no method matching foo(::BitArray{2})
显然,randbool() 会生成 BitArray,而我假设 randbool() 会生成 Array{Bool}。
Array{Bool} 和 BitArray 有什么关系?为什么它们都存在?
我是否可以编写foo(),使其使用单一方法接受两种输入类型(因为我看不出区别)?
【问题讨论】:
-
您对
randbool行为的假设并非不合理——这是一个非常糟糕的名字!它在 0.4 中已被弃用并重命名为bitrand(听起来更像是创建了一个 BitArray)。还有一种新方法rand(Bool, …)可以显式创建Bool的数组。您可以在 0.3 中通过 Compat 包开始使用这些新定义。
标签: arrays boolean julia bitarray