risc-v中文社区

 找回密码
 立即注册
查看: 940|回复: 0

[原创] risc-v开发基础 Scala 列表List---(5)

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2021-8-2 14:13:54 | 显示全部楼层 |阅读模式
object ListTest {

  def main(args:Array[String]){
    // 列表 List
    val list1 = List(1,2,3)
    //列表本身不可变,有点像java的String,对某个列表调用方法时(比如 ::,似乎这个列表发生了改变,而实际上是用新的值重建了
    //列表再返回而已。
    val list2 = List(4,5,6,7)
    val list3 = list1.::list2) //4 5 6 7 1 2 3
    val list4 = list1 ::: list2 //1 2 3 4 5 6 7
    list1.foreach(println) //1 2 3
    list2.foreach(println) //4 5 6 7
    list3.foreach(println)
    list4.foreach(println)
  //请注意上面list3和list4的值,通过实验可以发现list3和list4在添加List到原来的List的时候,添加的顺序是相反的。为什么会这样?
    //scala中,如果方法是使用操作符,比如 a * b,其实可以写成a.*(b),但是如果方法是以:结尾,则:的右边操作数对:左边操作数进行
    // 调用,比如 list1 ::: list2,则其实是list2.::list1),而list1:::list2的结果就是将list1添加在list2的前面
    //上面是对List添加List,如果是List添加一个元素则用::
    var lst = List(1,2,3,4,5)
    lst = 10::lst //10::lst,此句中::表示一个方法,并且是lst的方法,而10是::方法的参数
    lst.foreach(println(_))

    var lst2 = List(1,2,3,4,5)
    lst2 = lst2.:20) //20放在lst2的最前面了,也就是说lst2.:20)相当于20::lst2
//    lst2 +: 30
    lst2.foreach(println) //20 1 2 3 4 5
    lst2 = 30 +: lst2 //列表中 +:和数组中+:一样,都是在lst2的前面添加一个元素
    lst2.foreach(println(_)) //30 20 1 2 3 4 5
    lst2 = lst ++: lst2  //列表中++:和数组中++:一样,都是在lst2的前面添加新一个列表
    lst2.foreach(println)
    }
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-27 20:37 , Processed in 0.014270 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表