scala 基础 -------------------------变量的声明、条件表达式、块表达式、循环


                    变量的声明和使用
       使用val和var申明变量

例如:scala> val answer = 8 * 3 + 2

可以在后续表达式中使用这些名称
 val:value 简写,表示的意思为值,不可变
要申明其值可变的变量:val
 var:variable 简写,表示的变量,可以改变值
要申明其值不可变的变量:var

object VariableTest {
  def main(args: Array[String]) {
    //使用val定义的变量值是不可变的,相当于java里用final修饰的变量
    val i = 1
    //使用var定义的变量是可变得,在Scala中鼓励使用val
    var s = "hello"
    //Scala编译器会自动推断变量的类型,必要的时候可以指定类型
    //变量名在前,类型在后
    val str: String = "world"
  }
}

                    条件表达式
object IfDemo1 {
  val x = 1
  def main(args: Array[String]): Unit = {
    //声明一个变量
    val x = 1
  println("********************* 简单写法 ******************************")
  /**
    * 简单写法
    */
  //判断x的值,将结果返回给y
  //1:可以将条件表达式直接赋值给变量
  //2:不需要return,最后一行数据即返回值
  val y =
  if (x > 0) {
    1
  } else {
    -1
  }

  println(y)

  println("********************* 混合类型的表达式 ******************************")
  /**
    * 混合类型的表达式
    */
  val z = if(x>1) "success" else "error"

  //打印z的值
  println(z)

  println("********************* 缺失else ******************************")
  //如果缺失else,相当于 if(x>1) 1 else {}
  val m = if(x>2) 1
  println(m)

  println("********************* if...else if ...else ******************************")
  val k = if(x < 0) 0
  else if(x >= 1) 1 else -1

  println(k)


}
}

      块表达式
object BlockExpressionTest {
  def main(args: Array[String]) {
    val x = 0
    //在scala中{}中课包含一系列表达式,块中最后一个表达式的值就是块的值
    //下面就是一个块表达式
    val result = {
      if (x < 0){
        -1
      } else if(x >= 1) {
        1
      } else {
        "error"
      }
    }
    //result的值就是块表达式的结果
    println(result)
  }
}

                            循环
   使用for循环案例:

注意:
(*) <-  表示Scala中的generator,即:提取符
   在for循环中,还可以使用yield关键字来产生一个新的集合

 package scala.day01.loop

object ForTest1 {
  val arr = 1 to 10
  def main(args: Array[String]): Unit = {

    println("------------------------方式1--------------")
    for (item <- arr)
      print( item+ " ")
  }
  println("---------------------方式2(输出取余3为0的数据,完整写法)--------------------")
  for (item <- arr  ){
    if(item % 3 ==0)
      print(item + " ")
  }
  println()
  println("---------------------方式3(输出取余3为0的数据,简单写法)--------------------")
  for(item <- arr if item % 3 == 0)
    print( item + " ")
  println()
  println("-------------------方式4 循环倒序输出-------------------------------")
    for (item <- 1 to 3 reverse){
      print(item + " ")
    }
  println("-------------------方式5  循环嵌套输出九九乘法表")
  for(i <- 1 to 9){
    for (j <- 1 to i){
      if (j ==1 )  println()
      print(i * j + " ")
    }

    println("--------------------方式6 九九乘法表  简洁写法---------------------")
    for (i <- 1 to 9 ;j <- 1 to i ){

      if (j == 1) println()
      print(i * j + " ")
    }
    println("*********************方式七 (嵌套循环时,任意指定某个循环倒序输出)********************")
    for (i <- 1 until 9 reverse; j <- 1 to 5){
      print (i + "--" + j + " ")
    }
    println("---------------------方式八-------------------------------------------")
    for {
      i <- 1 to 9
      j <- 1 to i
    } {
        if (j == 1){
          println()

        }
      print(i * j + " ")
      }
    println("-------------------------------------------for绑定中间的变量-------------")
    var names = Array("tom","marry","mike","","")
    for {
      name <- names
      tmpName = name.trim()
      if tmpName.length > 0
    }{
      println(tmpName)
    }
    println("******基于已有的集合产生新的集合- yield*************")
    var result = for (item <- 1 to 10 if item % 2 == 0 ) yield{
      item * 2
    }
    print(result  + " ")
  }
}

                                           跳出循环的两种方式
package scala.day01.loop

object BreakDemo {
  var numbers = List(1,2,3,4,5,6,7,8,9)
  def main(args: Array[String]): Unit = {
    println("第一种循环")
    var flag = true
    for (item <- numbers if flag == true) {
      println(s"Value of is: ${item}")
      if (item == 5) {
        flag = false
      }
    }
    println("第二种循环")
    import scala.util.control.Breaks._
    breakable(
      for (item <- numbers){
        println(s"Value of is : ${item}")
        if(item == 5){
          break
        }
      }

    )

  }

}

猜你喜欢

转载自blog.csdn.net/qq_41166135/article/details/82594558
今日推荐