您的位置:首页 > 大数据

大数据系列修炼-Scala课程85

2016-10-10 09:58 381 查看
大数据系列修炼-Scala课程85

核心内容:

1、Scala中for循环强大的表现力操作代码实战

1、Scala中for循环强大的表现力操作代码实战
1>在Scala当中,尽量使用for循环这种语法结构,具有很强的表现力。

2>在def fun(args:Int*)中,参数args实际上是一个变长参数,代表可以传进来多个整型变量。

实例程序1:变长参数的用法

object  App
{
def main(args: Array[String]): Unit =
{
//变长参数,代表函数的参数列表可以有多个参数
def fun(args:Int*) =
{
var sum = 0
for(ele<- args) sum += ele
sum
}
val sum1:Int = fun(10,20,30)
println(sum1)
val sum2 = fun(10,50,60)
println(sum2)
}
}


运行结果:

60
120


实例2:输出母子关系

方法1:for循环

case class Person(name:String,man:Boolean,children:Person*) //第三个形式参数可以有0个、1个或多个
object  App
{
def main(args: Array[String]): Unit =
{
val person1 = Person("Lauren",false)
val person2 = Person("Rocky",true)
val person3 = Person("Roze",false,person1,person2)

val list:List[Person] = List(person1,person2,person3)
//方法1
for(person<- list)
{
if(person.man == false) //先判断性别
{
for(child<- person.children)
{
println(person.name+"\t"+child.name)
}
}
}
println
for(person<- list;if(person.man == false);child<- person.children) println(person.name+"\t"+child.name)
println
val list2 = for(person<- list;if(person.man == false);child<- person.children) yield (person.name+"\t"+child.name)
println(list2)
}
}


运行结果:

Roze    Lauren
Roze    Rocky

Roze    Lauren
Roze    Rocky

List(Roze   Lauren, Roze    Rocky)


方法2:链式风格

case class Person(name:String,man:Boolean,children:Person*) //第三个形式参数可以有0个、1个或多个
object  App
{
def main(args: Array[String]): Unit =
{
val person1 = Person("Lauren",false)
val person2 = Person("Rocky",true)
val person3 = Person("Roze",false,person1,person2)

val list:List[Person] = List(person1,person2,person3)
//方法2
val list2:List[Person] = list.filter(person=>person.man==false)  //筛选出性别为女
val list3:List[String] = list2.flatMap(person=>{person.children.map(child=>person.name+"\t"+child.name)})
println(list3)
}
}


运行结果:

List(Roze   Lauren, Roze    Rocky)


如有问题,欢迎留言指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: