3. Scala函数和循环表达式

函数的定义

def 方法名(参数名:参数类型):返回值类型 = {
// 方法体
// 方法体最后一行为返回值,不需要使用return
}

例子:

package com.yy.scala

object HelloWorld {

  def main(args: Array[String]): Unit = {
    println(add1(1,2))
    println(add2)
    hello //无参方法调用时可以不加括号
  }

  def add1(x:Int, y:Int) : Int = {
    x+y //返回值x+y,return可以不用写
  }

  def add2  = 1+1 //无参方法参数和()可以不用写,一行{}可以不用写

  def hello(): Unit ={
    println("Hello World!")//无返回值用Unit类型
  }

}

默认参数

在函数定义时,允许指定参数的默认值

例子:
不传参数默认输出“Hello World”,传参数会根据所传的参数输出“Hello + 参数”

def helloName(name:String = "World"):Unit = {
  println("Hello "+name)
}

命名参数

调用函数时可以不按参数顺序,用参数名指定参数

# println(speed(time = 30, distince = 90))
def speed(distince:Float, time:Float) : Float = {
    distince/time
}

可变参数

调用函数时可以传n个参数,比如sum(1,2)、sum(1,2,3)

  def sum(numbers:Int*) = {
    var result = 0
    for(number <- numbers){
      result += number
    }
    result
  }

条件表达式

if else

  def expression(x:Int) = {
    if (x == 1){
      true
    } else {
      false
    }
  }

循环表达式

to >= <= 左闭右闭

Range >= < 左闭开右

until >= < 左闭右开

scala> 1.to(10)
Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> 1 to 10
Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> Range(1, 10)
Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
scala> Range(1,10,2)
Range(1, 3, 5, 7, 9)
scala> Range(10,1,-1)
Range(10, 9, 8, 7, 6, 5, 4, 3, 2)
scala> 1 until 10
Range(1, 2, 3, 4, 5, 6, 7, 8, 9)

for 循环

for(i <- 1 to 10){
  println(i)
}

val courses = Array("Hadoop", "Hive", "Spark")
for(course <- courses){
  println(course)
}

foreach 循环

val courses = Array("Hadoop", "Hive", "Spark")
courses.foreach(x => println(x))

while 循环

val courses = Array("Hadoop", "Hive", "Spark")
var i = 0
while (i<courses.length){
  println(courses(i))
  i += 1
}
posted @ 2019-11-28 11:21  YanceyY  阅读(324)  评论(0)    收藏  举报