0
當給出Set
實例而不是List
實例時,for循環的行爲會如何更改?迭代Set而不是List時的for循環行爲
小提琴:http://scalafiddle.net/console/67ed94744426295f96268f4ac1881b46
代碼:
case class Book(title: String, authors: List[String]) {}
val books = List(
Book("Book 1", List("Author 1", "Author 2")),
Book("Book 2", List("Author 2")),
Book("Book 3", List("Author 3")),
Book("Book 4", List("Author 4"))
)
def authorsWithMultipleBooks(books: Iterable[Book]) =
for {
b1 <- books
b2 <- books
if b1 != b2
a1 <- b1.authors
a2 <- b2.authors
if a1 == a2
} yield a1
println(authorsWithMultipleBooks(books))
// Output: List(Author 2, Author 2)
println(authorsWithMultipleBooks(books.toSet))
// Output: Set(Author 2)
很好的解釋!謝謝 –