stavo scrivendo una funzione per gli array 2d booleani:Qual è la differenza tra Array {Bool} e BitArray in Julia e come sono correlati?
function foo(A::Array{Bool,2})
...
end
valutazione e test con
A = randbool(3,3)
foo(A)
rendimenti
ERROR: 'foo' has no method matching foo(::BitArray{2})
Ovviamente, randbool()
genera un BitArray
, mentre ho assunto randbool()
darebbe un Array{Bool}
.
Come sono correlati Array{Bool}
e BitArray
? Perché entrambi esistono?
Posso scrivere foo()
in modo che accetti entrambi i tipi di input utilizzando un unico metodo (poiché non riesco a vedere una differenza)?
La tua ipotesi sul comportamento di 'randbool' non è irragionevole - è un nome piuttosto brutto! È stato deprecato in 0.4 e rinominato in 'bitrand' (il che suona più come se creasse un BitArray). E c'è un nuovo metodo 'rand (Bool, ...)' per creare esplicitamente un array di 'Bool'. È possibile iniziare a utilizzare queste nuove definizioni in 0.3 con il pacchetto [Compat] (https://github.com/JuliaLang/Compat.jl). –