Case Class
Exercise 1: Defining and Instantiating Case Classes
Task: Define a case class named Book with two fields: title (String) and authors (List[String]). Create instances of this class for three different books.
Exercise 2: Pattern Matching on Case Classes
Task: Write a function describeBook that accepts a Book and returns a string describing the book. If the book has more than one author, the description should note that it's written by multiple authors.
Exercise 3: Copying and Modifying Case Classes
Task: Using the Book case class from Exercise 1, create a copy of book1 but with an additional author "Venners Bill". Use the copy method provided by case classes.
Exercise 4: Case Classes in Collections
Task: Given a list of books, write a function titlesByAuthor that takes an author's name and returns a list of titles by that author.