Scala语言笔记 - 第三篇(容器方法篇)

Scala语言笔记 - 第三篇(容器方法篇)

​ 最近研究了下scala语言,这个语言最强大的就是它强大的函数式编程(Function Programming)能力,记录下最近学习的一些新的和技巧。注意:本系列博客不会从头讲解该语言的语法,而是通过一些例子讲解该语言的一些技巧,如果需要从头学习scala,建议使用该教程快速入门。

map和flapMap方法:

​ 对于数组或者容器,scala和Python等语言类似,提供了map和flapMap等方法(目前Java8的stream方法也支持了这种用法)来方便的对容器里面的元素进行处理,并生成一个新的容器对象,来看如下代码:

    /**
    * Person class
    * @param _name name
    * @param _age age
    * @param _friends firends
    */
  case class Person(_name:String, _age:Int, _friends:Seq[String]){
    private var name = _name
    private var age = _age
    private var friends = _friends

    def getName() : String = this.name
    def getAge() : Int = this.age
    def getFriends() : Seq[String] = this.friends
  }

  def main(args: Array[String]): Unit = {
    val li = List(Person("li",12,List("li1","li2")), Person("wang", 13, List("wang1","wang2", "wang3")),
      Person("zhao", 15, List("zhao1")))

    //map:将列表转换为列表嵌套列表的方式,即List(List(a,b,c), List(d,e,f), List(g,h,i))的形式
    println(li.map(m => m.getFriends()))
    //flatMap:将列表转换为一个一维的列表,即List(a,b,c,d,e,f,g,h,i)的形式
    println(li.flatMap(m => m.getFriends()))

    println("------------------------------------------------------------------")
    var doubleArr = Array[Array[String]](Array("String1", "String2"),Array("World1", "World2", "World3"))
    //
    println(doubleArr.mkString(" "))

    //表示将前面的变量转换为冒号后面的类型,这里的意思是将doubleArr拼接成单个Array
    var flatArr = Array.concat(doubleArr:_*)
    // 0.5, 一个冒号用来转换参数的例子。
    var res = 1 / (2 : Double)
    println(flatArr.mkString(" "))
    println("------------------------------------------------------------------")
  }

​ Array的打印方式和Java类似,直接进行print,打印出来的会是对象的id,在这里可以使用mkString方法生成字符串来打印,同时,请注意concat的用法,是scala中的一个黑科技用法。

posted @ 2019-05-20 15:15  不晓得叫什么  阅读(220)  评论(0编辑  收藏  举报