Scala-从单个参数的列表中返回类对象

时间:2019-04-10 09:05:33

标签: scala class iteration

我需要通过仅搜索其参数之一来从“图书”列表中返回单个Book case类对象。我让它与foreach一起工作,但想知道是否可以更优雅地完成它。

我对其他参数((部分)作者和标题搜索)具有相同的条件,我曾使用过滤器返回包含所有匹配书籍的新列表,但对于ISBN,它只能返回一个对象,并希望我能做到这一点而不是1的列表。

我已经使用了foreach来遍历整个列表,并使用所需的Book更新var,但是感觉很混乱。

该类如下:

case class Book(title: String, author: String, ISBN: String, reference: Boolean = false)

这就是我所拥有的:

  def searchISBN(isbnSearch: String): Book = {
    var result :Book = null
    books.foreach {
      book => if(book.ISBN == isbnSearch) { result = book }
    }
    result
  }

尝试更多类似的事情:

  def searchISBN(isbnSearch: String): Book = {
    val result = books.find(_.isbnSearch)
    result
  }

1 个答案:

答案 0 :(得分:2)

您的第二种方法更像Scala式的,但您必须考虑到可能找不到目标的事实。

def searchISBN(isbnSearch: String): Option[Book] =
  books.find(_.ISBN == isbnSearch)
相关问题