Can anyone know why the following code cannot pass compilation? I just don't know why type mismatch occurs.
The result should look like this:
List(Book, DVD, MP3)
My code is:
package library3 { abstract class Item() { def use(): Unit } // match on Items. case class Book (val title: String) extends Item case class DVD (val title: String) extends Item case class MP3 (val title: String) extends Item } object Ch3_2 { import library3._ def main( args:Array[String] ) = { val items = List( new Book( "The Hobbit" ), new DVD( "Black Adder Goes Forth" ), new MP3( "Watership Down" ) ) println( classifyItems( items ) ) } def classifyItems( items:List[Item] ): List[String] = { // Use a for comprehension and pattern matching to take a list of // items and return a list of types of items. for (item <- items) { // <=== type mismatch; item match { case b: Book => println("Book") case d: DVD => println("DVD") case m: MP3 => println("MP3") } } } }
Error message:
error: type mismatch; found : Unit required: List[String] for (item <- items) { ^ one error found
source share