Scala控制结构讲解

本文介绍了Scala的内建控制结构,包括if、while、For、Try、Match以及如何在Scala中实现类似break和continue的功能。通过示例代码展示了这些控制结构的用法,如if语句的使用,For循环的各种形式,以及Match表达式的匹配规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.zhu.scala

import java.io.{File, FileNotFoundException, FileReader}



/**
  * Created by zhuhailong-dc on 2017/3/3.
  *
  * 内建控制结构
  * 1. if
  * 2. while
  * 3. For
  * 4. Try
  * 5. Match
  * 6. break&continue
  *
  */
class Scala_5{
}

object Scala_5 {
  def main(args: Array[String]): Unit = {
    //1. if
    /**
      * 在scala中使用val比var更好的体现面向函数式编程,同时也更好的支持了等效推论
      */
    val filename = if (1 == 1) 1 else 0
    //println(filename)

    //2. while
    var line = ""
    //    do{
    //      //line=readLine(); //在控制台输入内容
    //      println("Read:"+line)
    //    }while(line=="")

    /**
      * 在Scala中 一个方法中,没有返回值的话,等于() 这是不同于Java的地方
      */

    //3. For
    val files = (new File(".")).listFiles();
    for (file <- files) {
      //println(file)
    }

    for (i <- 1 to 4) {
      //println(i)
    }

    for (i <- 1 until 4) {
      //println(i)
    }

    for (file <- files if file.isFile; if file.getName.endsWith("main")) {
      //println(file)
    }

    def fileLines(file: java.io.File) = scala.io.Source.fromFile(file).getLines().toList

//    def grep(pattern: String) =
//      for {
//        file <- files if file.isFile
//        line <- fileLines(file) if line.trim.matches(pattern)
//      } println(file + ":::" + line.trim)
//
//    grep(".*xml.*")

//    def grep2(pattern:String)=
//      for{
//        file<-files if file.isFile
//        line<-fileLines(file)
//        trimmed=line.trim
//        if trimmed.matches(pattern) //mid-stream(流间) 变量绑定 不需要使用val或者var声明
//      } println(file+":::"+trimmed)

    val forLineLengths=
      for{
        file<-files if file.isFile
        line<-fileLines(file)
        trimmed=line.trim
        if trimmed.matches(".*project.*")
      }yield trimmed

    //forLineLengths.foreach(println)

    // 4.Try
//    try{
//      val f=new FileReader("bbbb")
//    }catch{
//      case ex: FileNotFoundException=> //handle missing file
//      case ex: IOException=> //handle other I/O error
//    }finally{
//      println(1)
//    }

    // 5.match
    val firstArg=if(1==21) "salt" else ""
    firstArg match {
      case "salt" => println("papper")
      case "chips"=> println("salsa")
      case _ => println("huh") //表示缺省状态
    }

    val friend=firstArg match {
        case "salt" => "papper"
        case "chips" => "salsa"
        case _ => "huh"
      }
    //println("friend:"+friend)

    // 6. break&continue
    /**
      * 在scala中没有break和continue的概念
      */
    def searchFrom(i:Int):Int=
      if(i>=args.length) -1
      else if (args(i).startsWith("-")) searchFrom(i+1)
      else if (args(i).endsWith(".scala")) i
      else searchFrom(i+1)
    var i=searchFrom(0)
    println(i)

  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值