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
}

浙公网安备 33010602011771号