2017-06-01 1 views
3

J'utilise la méthode diff pour comparer deux tableaux d'octets de chaîne, mais donnant inattendu (ou est-ce le comportement attendu?) Résultats.Array scala [Byte] diff

diff() retours true pour (subString diff originalString), mais retourne false pour (originalString diff subString). Serait génial si quelqu'un peut expliquer cela. L'exemple de code & est donné ci-dessous.

Extrait de code

val subString : Array[Byte] = "cde".getBytes("UTF-8") 
val originalString : Array[Byte] = "abcdefg".getBytes("UTF-8") 

println(s"compare subString with originalString - ${((subString diff originalString).isEmpty).toString}") 
println(s"compare originalString with subString - ${((originalString diff subString).isEmpty).toString}") 

Sortie

compare subString with originalString - true 

compare originalString with subString - false 

Répondre

5

diff n'est pas comparer; c'est comme la différence de set, "quels sont les personnages qui sont dans la première chaîne mais pas dans la seconde?"

"abcd" diff "a" = "bcd" 
"a" diff "abcd" = "" 

donc ce sont presque équivalent:

"abc".toSet diff "cb".toSet = Set(a) 
"abc" diff "cb" = "a"