美文网首页scala
scala之for 入门

scala之for 入门

作者: 平头哥2 | 来源:发表于2019-03-26 13:37 被阅读0次

    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))
    

    相关文章

      网友评论

        本文标题:scala之for 入门

        本文链接:https://www.haomeiwen.com/subject/qvegvqtx.html