Scala基础:定义变量和逻辑判断语句以及方法和函数

 定义变量和逻辑判断语句

package com.zy.scala

import scala.collection.immutable

object ScalaDemo {
  def main(args: Array[String]): Unit = {
    //定义变量-------------------------------------------
    // var 定义的变量是可变的
    var str1: String = "111"
    // 使用 val 定义的变量值是不可变的,相当于 java 里用 final 修饰的变量 scala鼓励使用val
    val str2: String = "222"

    //定义块表达式
    val a = 10
    val b = 20
    //在 scala 中{}中包含一系列表达式,块中最后一个表达式的值就是块的值
    //下面就是一个块表达式
    val result: Any = {
      val c = b - a
      val d = b - c
      d //块中最后一个表达式的值
    }
    //result 的值就是块表达式的结果
    println(result)

    //条件表达式----------------------------------------
    //if else的使用
    val x = 1
    val y = if (x == 1) "111" else "222"
    println(y)

    //if else if  else
    val z = if (x > 1) "111" else if (x < 1) "222" else false
    println(z)

    //循环
    //for(i <- 表达式),表达式 1 to 10 返回一个 Range(区间)
    //每次循环将区间中的一个值赋给 i
    for (i <- 1 to 10)
      println(i)

    //for(i <- 数组)
    val arr = Array("a", "b", "c")
    for (i <- arr)
      println(i)

    //高级 for 循环
    //每个生成器都可以带一个条件,注意:if 前面没有分号
    for (i <- 1 to 3; j <- 1 to 3 if i != j)
      print((10 * i + j) + " ")
    println()
    //for 推导式:如果 for 循环的循环体以 yield 开始,则该循环会构建出一个集合
    //每次迭代生成集合中的一个值
    val v: immutable.IndexedSeq[Int] = for (i <- 1 to 10) yield i * 10
    println(v)
  }
}

 方法和函数

package com.zy.scala

object FunctionDemo {
  def main(args: Array[String]): Unit = {
    //方法和函数--------------------------------------

    //定义方法 def 函数名(参数列表):返回值类型={方法体}
    def method1(x: Int, y: Int): Int = {
      x * y
    }

    //调用方法
    val a: Int = method1(3, 2)
    println(a)

    //定义函数
    val function1 = (x: Int, y: Int) => {
      x + y
    }
    //调用函数
    val b: Int = function1(1, 2)
    println(b)


    //定义一个方法
    //方法 m2 参数要求是一个函数,函数的参数必须是两个 Int 类型
    //返回值类型也是 Int 类型
    def m1(f: (Int, Int) => Int): Int = {
      f(2, 6)
    }

    //定义一个函数 f1,参数是两个 Int 类型,返回值是一个 Int 类型
    val f1 = (x: Int, y: Int) => x + y
    //再定义一个函数 f2
    val f2 = (m: Int, n: Int) => m * n

    //调用 m1 方法,并传入 f1 函数
    val r1 = m1(f1)
    println(r1)
    //调用 m1 方法,并传入 f2 函数
    val r2 = m1(f2)
    println(r2)


    //将方法转换成函数,只需要在方法的后面加上一个下划线
    var f3 = m1 _
    val r3: Int = f3(
      f1
    )
    println(r3)
  }
}

 

posted @ 2018-10-03 11:41  青衫仗剑  阅读(680)  评论(0编辑  收藏  举报