scala

scala之for 入门

2019-03-26  本文已影响0人  平头哥2

For循环

输出1到n

for (i <- 1 until 5)
    println(i)

for (i <- 1 to 5)
    println(i)

读取文件并遍历

//读取一个文件夹下面所有得文件
val listFile = new File("C:\\Users\\guo20\\Desktop\\pdf").listFiles

//遍历方式1
for (f <- listFile)
    println(f.getAbsolutePath)
//遍历方式2
listFile.foreach(f => println(f.getAbsolutePath))
//遍历方式3
for (i <- 0 to listFile.length - 1)
    println(listFile(i))

读取文件夹并过滤

def testLoop():Unit = {
  val listFile = new File("C:\\Users\\guo20\\Desktop\\pdf").listFiles
  
  for (f <- listFile
       if f.getName.endsWith(".pdf") // 过滤后缀名是pdf的文件
       if f.isDirectory) //判断文件是不是文件夹
    println(f.getAbsolutePath)
}

嵌套循环过滤

def grep(pattern: String): Unit = {
  val listFile = new File("C:\\Users\\guo20\\Desktop\\pdf").listFiles



  //方式一
  for (file <- listFile  //for循环之后是小括号
         if file.getName.endsWith(".log"); //这里有分号
         line <- fileLines(file)
         if line.trim.matches(pattern)
  ) println(file + ":" + line.trim)
   
  //方式二
  for {file <- listFile //for循环之后是花括号
       if file.getName.endsWith(".log") //这里没有分号
       line <- fileLines(file)
       trimmed = line.trim 
       if trimmed.matches(pattern)
  } println(file + ":" + trimmed)
}

产生一个新的集合

val listFile = new File("C:\\Users\\guo20\\Desktop\\pdf").listFiles
val newFiles = for{
  file <- listFile
  if file.getName.endsWith(".pdf")
  if file.isFile
} yield file

newFiles.foreach(f => println(f.getAbsolutePath))
上一篇 下一篇

猜你喜欢

热点阅读