scala中yield关键字讲解

于2017-03-16由小牛君创建

分享到:


1.yield作用

   当我们使用for或者if,或者for与if联合使用,会过滤出符合你条件的集合,但是当你并不需要打印过滤出来的集合时,

你需要对过滤后的集合进行处理,使用yield关键字可以在for表达式中生成新的集合。

2.yield例子

    2.1有yield关键字

 

[plain] view plain copy
 
  1. val fruits = List("banana fruit","apple fruit","peach","grapes","pear")  
  2.   
  3. val filterFruit = for {  
  4.     fruit <- fruits  
  5.     if fruit.contains("fruit") && !fruit.startsWith("banana")  
  6. }yield fruit  

结果为:

 

 

[plain] view plain copy
 
  1. fruits: List[String] = List(banana fruit, apple fruit, peach, grapes, pear)  
  2. filterFruit: List[String] = List(apple fruit)  

我们看到没有打印出过滤后的集合。

 

    2.2没有yield关键字

 

[plain] view plain copy
 
  1. val fruits = List("banana fruit","apple fruit","peach","grapes","pear")  
  2.   
  3. val filterFruit = for {  
  4.     fruit <- fruits  
  5.     if fruit.contains("fruit") && !fruit.startsWith("banana")  
  6. } fruit  

结果为:

 

 

[plain] view plain copy
 
  1. fruits: List[String] = List(banana fruit, apple fruit, peach, grapes, pear)  
  2. filterFruit: Unit = ()  

 

   2.3带println关键字

 

 

[plain] view plain copy
 
  1. val fruits = List("banana fruit","apple fruit","peach","grapes","pear")  
  2.   
  3. val filterFruit = for {  
  4.     fruit <- fruits  
  5.     if fruit.contains("fruit") && !fruit.startsWith("banana")  
  6. } println(fruit)  

结果为:

 

 

fruits: List[String] = List(banana fruit, apple fruit, peach, grapes, pear)
apple fruit
 
filterFruit: Unit = ()

3.完整代码及结果

 

   3.1带yield关键字

   3.2无yield关键字

   3.3带prinltn关键字