pisałem funkcję dla logicznych 2d tablice:Jaka jest różnica między Array {Bool} i BitArray w Julia i jak są one powiązane?
function foo(A::Array{Bool,2})
...
end
Ocenianie i testowanie go
A = randbool(3,3)
foo(A)
zwrotów
ERROR: 'foo' has no method matching foo(::BitArray{2})
Oczywiście randbool()
generuje BitArray
, natomiast Przypuszczałem randbool()
przyniosłoby Array{Bool}
.
W jaki sposób powiązane są Array{Bool}
i BitArray
? Dlaczego oba istnieją?
Czy mogę napisać foo()
w taki sposób, aby akceptował oba typy wejść za pomocą jednej metody (ponieważ nie widzę różnicy)?
Twoje założenie dotyczące zachowania 'randbool' nie jest nierozsądne - to dość zła nazwa! Został przestarzały w wersji 0.4 i zmieniono jego nazwę na 'bitrand' (co brzmi bardziej, jakby tworzył BitArray). I istnieje nowa metoda 'rand (Bool, ...)', aby jawnie utworzyć tablicę 'Bool'. Możesz zacząć używać tych nowych definicji w 0.3 za pomocą pakietu [Compat] (https://github.com/JuliaLang/Compat.jl). –