pattern matching - scala Nil type matchs against arraybuffer -


i found strange working construct in scala:

(arraybuffer[int]():seq[int]) match {    case nil => "whoo"    case _ => "nayyy" } 

which returns

"whoo" 

apparently works partially for vectors, not pattern matching. can explain me that? nil does not have method named unapply. how possible?

with objects, unapply not involved (that case if had used hypothetical case nil() => ...). instead, equality checked using equals method.

equality collections defined in terms of elements. e.g.

list(1,2,3) == vector(1,2,3)  // true! 

the same happens nil equals empty sequence:

vector() == nil  // true collection.mutable.arraybuffer() == nil  // true 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -