Scala-数组,列表,元组和文件读写 - webdancer's Blog

Scala-数组,列表,元组和文件读写

webdancer posted @ 2014年1月03日 21:35 in 未分类 with tags scala , 4681 阅读

已经对Scala的变量,函数了解以后,看一下比较高级的数据结构以及IO。

1.数组:

val language = new Array[String](2)
language(0)="Java"
language(1)="Scala"

在scala中提供一种更加简洁的方式,

val language = Array("java","Scala")

可以看到,与Java明显不同的是:Scala中数组使用()来索引,而不是使用[]。得到数组里面的每个元素,可以使用:

for(i <- 0 to 2)
    println(language(i))

需要注意的是:0 to 2 相当于0.to(2),这个和1+3是一样的道理,所有的操作符都是函数调用的方式进行的。这也是Scala中索引使用(),而不使用[]的原因。language(1)相当于language.apply(1)。

 

2.Scala的数组长度不可变,但是数组还是可以变化的,比如:

langage(0) = "C"

如果想让数组中元素也不可变,可以使用List。

val l1 = List(1,2)
val l2 = List(3,4)
val l3 = l1:::l2
val l4 = 2::l2

List是不可变的,符合函数式编程的性质,它有很多操作。

  • 构造:List()
  • 连接:l1 ::: l2
  • 数数:l1.count(e => e>0)
  • Map:l1.map(e => e* 2)
  • filter: l1.filter(e => e>1)
  • foreach: l1.foreach(println)
  • 长度:l1.length
  • reverse:l1.reverse()
  • 排序:l1.sortWith((a,b) => a<b)
  • head,last,init,tail

3.Tuple:与List基本一样,但是可以放不同类型的元素;最多可以放22个;索引从1开始,使用._进行索引,比如:t._1

4.set,Map

5.读写文件:

import scala.io.Source

for(line <- Source.fromFile(filename).readlines())
    println(line)

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee