我有一个书单:Scala的for循环高阶函数
case class Book(name:String,authors:List[String])
val books:List[Book] = List(
Book(name="Code in Scala",authors=List("Viny","Vinay")),
Book(name="Dance in 30 days",authors=List("Namratha","Namitha")),
Book(name="Cook in 30 days",authors=List("Pavan")),
Book(name="Gym in 30 days",authors=List("Nisanth","Vinay"))
)
现在我想知道作者的名字与“输入电压”开头的书籍。 我已经实现了这个for循环象下面这样:
for(b<-books ; a <- b.authors ; if a.startsWith("Vin")) yield b.name
,但我无法用高阶函数来实现这一点。 我试过如下:
books flatMap (b=> b.authors.withFilter(a=>a.startsWith("Vin")).map(x=>x))
这让我对作者的姓名,但我无法访问我的书object.how解决这个问题?这里 主要目标是转换/翻译了“循环”到高阶函数(flatmap /过滤/图)
如果你想从第二个代码示例,你会得到书对象中删除name属性。你能用高阶函数来展示你的代码吗? – Pavel