zoukankan      html  css  js  c++  java
  • scala编程第16章学习笔记(1)

    List列表的基本操作

    head方法获得列表的第一个元素

    tail方法获得列表除第一个元素之外的其它元素

    isEmpty:判断列表是否为空,空的话返回真

    last:获得列表最后一个元素

    init:获得除最后一个元素之外的元素

    reverse:反转列表

    前缀与后缀:drop、take、splitAt

    xs take n 返回xs列表的前n个元素,如果n大于xs.length,则返回整个xs。

    xs drop n 返回xs列表除前n个元素之外的所有元素,如果n大于xs.length,则返回空列表。

    splitAt操作在指定位置拆分列表,并返回对偶列表。

    xs splitAt n等价于(xs take n, xs drop n)

    例子如下:

    scala> List(1, 2, 3, 4, 5) take 2
    res2: List[Int] = List(1, 2)
    
    scala> List(1, 2, 3, 4, 5) drop 2
    res3: List[Int] = List(3, 4, 5)
    
    scala> List(1, 2, 3, 4, 5) splitAt 2
    res4: (List[Int], List[Int]) = (List(1, 2),List(3, 4, 5))

    元素选择:apply方法和indices方法
    apply方法实现了随机元素的选择,与其它类型一样,当对象出现在应该是方法调用的函数位置上时,就会隐式地插入apply方法

    scala> val abcde=List('a' ,'b', 'c', 'd', 'e')
    abcde: List[Char] = List(a, b, c, d, e)
    
    scala> abcde apply 2
    res7: Char = c
    
    scala> abcde(2)
    res8: Char = c

    xs apply n 等价于 (xs drop n).head
    indices方法可以返回指定列表的所有有效索引值组成的类表:

    scala> abcde.indices
    res9: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)

    啮合列表:zip

    zip操作可以把两个列表组成一个对偶列表:

    scala> abcde.indices zip abcde
    res10: scala.collection.immutable.IndexedSeq[(Int, Char)] = Vector((0,a), (1,b),(2,c), (3,d), (4,e))

    如果两个列表的长度不一致,那么任何不能匹配的元素将被丢掉:

    scala> abcde zip List(1, 2, 3)
    res11: List[(Char, Int)] = List((a,1), (b,2), (c,3))

    zipWithIndex把列表元素与索引值啮合在一起

    scala> abcde.zipWithIndex
    res12: List[(Char, Int)] = List((a,0), (b,1), (c,2), (d,3), (e,4))

    显示列表:toString方法和mkString方法

    toString操作返回列表的标准字符串表达形式:

    scala> abcde.toString
    res13: String = List(a, b, c, d, e)

    如果需要其他表达形式,可以使用mkString方法。xs mkString(pre, sep, post)
    其中pre是需要在显示的元素之前的前缀字符串,sep为两个元素之间的分割字符串,post为显示在最后面的后缀字符串。

    xs.mkString 等价于 xs mkString("", sep, "")

    xs.mkString 等价于 xs mkString ""

    scala> abcde mkString ("[", ",", "]")
    res15: String = [a,b,c,d,e]
    
    scala> abcde mkString ""
    res17: String = abcde
    
    scala> abcde.mkString
    res19: String = abcde
    
    scala> abcde mkString ("List(", ", ", ")")
    res20: String = List(a, b, c, d, e)

    mkString方法还有名为addString的变体,它可以把构建好的字符串添加到StringBuilder对象中,而不是作为结果返回:

    scala> val buf = new StringBuilder
    buf: StringBuilder =
    
    scala> abcde addString (buf, "(", ";", ")")
    res21: StringBuilder = (a;b;c;d;e)

    mkString和addString方法都继承自List的超特质Iterable,因此他们可以应用到各种可枚举的集合类上。

  • 相关阅读:
    ionic localstorage
    angular 中文鏈接
    把jqmobi 變成jQuery 的插件 從此使用jQuery
    jqmobi 的一些設置
    ionic ngcordova map 地圖
    ionic pull to refresh 下拉更新頁面
    json 對象的序列化
    鍵盤彈出,頁面佈局被推上去了.....
    Cordova V3.0.0中config.xml配置文件的iOS Configuration
    android ios 只能輸入數字 不能輸入小數點的 函數 cordova
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4089646.html
Copyright © 2011-2022 走看看